MyBatis7-逆向工程

七.逆向工程

• MyBatis Generator:
• 简称MBG,是一个专门为MyBatis框架使用者定
制的代码生成器,可以快速的根据表生成对应的
映射文件,接口,以及bean类。支持基本的增删
改查,以及QBC风格的条件查询。但是表连接、
存储过程等这些复杂sql的定义需要我们手工编写
• 官方文档地址
http://www.mybatis.org/generator/
• 官方工程地址
https://github.com/mybatis/generator/releases

6.1 导入pom

<plugin>
        <groupId>org.mybatis.generator</groupId>
        <artifactId>mybatis-generator-maven-plugin</artifactId>
        <version>1.3.6</version>
        <configuration>
          <configurationFile>src/main/resources/mbg.xml</configurationFile>
          <verbose>true</verbose>
          <overwrite>true</overwrite>
        </configuration>
        <executions>
          <execution>
            <id>Generate MyBatis Artifacts</id>
            <goals>
              <goal>generate</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
<!--MBG-->
    <dependency>
      <groupId>org.mybatis.generator</groupId>
      <artifactId>mybatis-generator-core</artifactId>
      <version>1.3.6</version>
    </dependency>

6.2 mgb.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="D:\jar-maven\mysql\mysql-connector-java\5.1.35\mysql-connector-java-5.1.35.jar"/>

<!--
    Context标签
    targetRuntime=“MyBatis3“可以生成带条件的增删改查
    targetRuntime=“MyBatis3Simple“可以生成基本的增删改查
    如果再次生成,建议将之前生成的数据删除,避免xml向后追加内容出现的问题。
-->
    <context id="DBTables" targetRuntime="MyBatis3">
        <!--jdbcConnection:指定如何连接到目标数据库-->
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                        connectionURL="jdbc:mysql://localhost:3306/mybatis1?allowMultiQueries=true"
                        userId="root"
                        password="123"/>

        <!--配置java解析器-->
        <javaTypeResolver>
            <property name="forceBigDecimals" value="fasle"/>
        </javaTypeResolver>

        <!--
            javaModelGenerator:指定javaBean的生成策略
            targetPackage:目标包名
            targetProject:目标工程
            -->
        <javaModelGenerator targetPackage="com.itlc.mybatis.bean"
                            targetProject="src\main\java">
            <!-- 是否允许子包,即targetPackage.schemaName.tableName -->
            <property name="enableSubPackages" value="false"/>
            <!-- 是否对model添加 构造函数 -->
            <property name="constructorBased" value="true"/>
            <!-- 是否对类CHAR类型的列的数据进行trim操作 -->
            <property name="trimStrings" value="true"/>
            <!-- 建立的Model对象是否 不可改变  即生成的Model对象不会有 setter方法,只有构造方法 -->
            <property name="immutable" value="false"/>
        </javaModelGenerator>

        <!--
            sqlMapGenerator: sql映射生成策略
            targetPackage:目标包名
            targetProject:目标工程
        -->
        <sqlMapGenerator targetPackage="com.itlc.mybatis.dao.sqlXml"
                         targetProject="src\main\java">
            <property name="enableSubPackages" value="true"/>
        </sqlMapGenerator>

        <!--javaClientGenerator:指定mapper接口所在的位置-->
        <javaClientGenerator type="XMLMAPPER"
                             targetPackage="com.itlc.mybatis.dao" targetProject="src\main\java">
            <property name="enableSubPackages" value="true"/>
        </javaClientGenerator>

        <!--指定要逆向分析哪些表,根据表创建javabean-->
        <table tableName="tbl_dept"/>
        <table tableName="tbl_employee"/>
    </context>
</generatorConfiguration>

6.3 Idea自动逆向创建

idea利用maven自动创建

创建成功以后:
创建成功

6.4 对于逆向创建文件的使用

beanExample是封装查询条件的类

public void testSample() throws Exception{
        SqlSessionFactory sqlSessionFactory=getSqlSessionFactory();
        SqlSession sqlSession=sqlSessionFactory.openSession();
        try {
            TblEmployeeMapper employeeMapper=sqlSession.getMapper(TblEmployeeMapper.class);
            //Example是封装查询条件的

            //查询所有
            List<TblEmployee> employees=employeeMapper.selectByExample(null);
            System.out.println(employees);

            //创建一个Criteria,这个Criteria就是拼装查询条件的(模仿QBC)
            TblEmployeeExample example=new TblEmployeeExample();
            TblEmployeeExample.Criteria criteria1=example.createCriteria();
            //拼装and条件 select * where (last_name like ? and gender=?)
            criteria1.andLastNameLike("%p%");
            criteria1.andGenderEqualTo("0");

            //拼装or条件 select * where (last_name like ? and gender=?) or email like "%p%"
            TblEmployeeExample.Criteria criteria2=example.createCriteria();
            criteria2.andEmailLike("%p%");
            example.or(criteria2);

            employees=employeeMapper.selectByExample(example);
            System.out.println(employees);
        }finally {
            sqlSession.close();
        }
     }

猜你喜欢

转载自blog.csdn.net/maniacxx/article/details/80354063
今日推荐