MyBatis 7. 逆向工程

Mybatis 逆向工程

Mybatis Generator(MBG)是一个专门为 MyBatis 框架使用者定制的代码生成器,可以快速的根据表生成对应的映射文件,接口,以及 bean 类。支持基本的增删改查,以及 QBC 风格的条件查询。但是表连接、存储过程等这些复杂 sql 的定义需要我们手工编写。

官方文档:http://www.mybatis.org/generator/

通过 maven 运行 MBG

<plugin>
    <groupId>org.mybatis.generator</groupId>
    <artifactId>mybatis-generator-maven-plugin</artifactId>
    <version>${mbg.version}</version>
    <configuration>
        <configurationFile>src/main/resources/generatorConfig.xml</configurationFile>
        <verbose>true</verbose>
        <overwrite>true</overwrite>
    </configuration>
    <executions>
        <execution>
            <id>Generate MyBatis Artifacts</id>
            <goals>
                <goal>generate</goal>
            </goals>
        </execution>
    </executions>
</plugin>

配置 generatorConfig.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
        PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
        "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">

<generatorConfiguration>

    <!--指定数据库驱动类的路径-->
    <classPathEntry location="F:\apache-maven-3.5.2\repository\mysql\mysql-connector-java\5.1.38\mysql-connector-java-5.1.38.jar"/>

    <!--指定生成一组对象的环境
        targetRuntime="MyBatis3Simple" 即生成简单的CRUD
    -->
    <context id="MySqlTable" targetRuntime="MyBatis3Simple">
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                        connectionURL="jdbc:mysql:///mybatis"
                        userId="root"
                        password="root">
        </jdbcConnection>

        <!--定义Java类型解析器的属性-->
        <javaTypeResolver>
            <property name="forceBigDecimals" value="false"/>
        </javaTypeResolver>

        <!-- javaModelGenerator 用于定义Java bean 生成策略的属性
             targetPackage      目标包名
             targetProject      目标工程
        -->
        <javaModelGenerator targetPackage="com.chen.entity"
                            targetProject="src/main/java">
            <property name="enableSubPackages" value="true"/>
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>

        <!--指定 sql 映射文件路径-->
        <sqlMapGenerator targetPackage="com.chen.dao.xml" targetProject="src/main/java">
            <property name="enableSubPackages" value="true"/>
        </sqlMapGenerator>

        <!--指定 mapper 接口路径-->
        <javaClientGenerator type="XMLMAPPER" targetPackage="com.chen.dao" targetProject="src/main/java">
            <property name="enableSubPackages" value="true"/>
        </javaClientGenerator>

        <!--指定生成哪些表-->
       <table tableName="users" domainObjectName="User"/>
       <table tableName="department" domainObjectName="Department"/>


    </context>
</generatorConfiguration>

通过 idea 生成

这里写图片描述

targetRuntime="MyBatis3Simple" 生成后
这里写图片描述

targetRuntime="MyBatis3" 生成后的 java bean

这里写图片描述

而 XXXExample 是封装查询条件的类

//封装查询条件
UserExample example = new UserExample();
//创建一个 Criteria,来拼装查询条件
UserExample.Criteria criteria1 = example.createCriteria();
criteria1.andNameLike("%e%");
criteria1.andAgeBetween(10,30);

UserExample.Criteria criteria2 = example.createCriteria();
criteria2.andNameLike("%o%");

example.or(criteria2);

@Test
public void testMBG() throws IOException {
   SqlSession sqlSession = getSqlSessionFactory().openSession(true);
   try {
       UserMapper mapper = sqlSession.getMapper(UserMapper.class);

       //封装查询条件
       UserExample example = new UserExample();
       //创建一个 Criteria,来拼装查询条件
       UserExample.Criteria criteria1 = example.createCriteria();
       criteria1.andNameLike("%e%");

       UserExample.Criteria criteria2 = example.createCriteria();
       criteria2.andNameLike("%o%");
       example.or(criteria2);
       // 此时 sql 语句被拼接为 select id,name,age,d_id from users where (name like ?) or (name like ?)
       mapper.selectByExample(example);
example.or(criteria2);
   } finally {
      sqlSession.close();
   }
}

猜你喜欢

转载自blog.csdn.net/qq_37138933/article/details/79496308
今日推荐