Mybatis技术的使用一:逆向工程

目录

一、什么是Mybatis的逆向工程:

1.正常流程:

2.加入Mybatis逆向工程后的流程:

二、优缺点:

三、使用步骤:

1、创建Maven工程,完善工程结构

 2、引入pom依赖

3、创建逆向工程的配置文件 generatorConfig.xml

4、自动生成代码程序

四、案例展示

一、建立数据表:user、book

二、改写配置文件:

1、数据库连接配置,指定自己的数据库

2、配置pojo生成的位置

3、配置sql映射文件的生成位置

4、配置dao接口的生成位置

5、指定逆向依据的数据表

三、运行生成代码工具类

四、运行结果

1、pojo

2、mapper

3、mapper.xml

4、实例对应的example

五、实例对应的example介绍

方法介绍:

使用案例:


一、什么是Mybatis的逆向工程:

1.正常流程:

1.数据库:设计数据表

2.实体类:建立与数据表对应的pojo实体类

3.持久层:设计持久层,Mapper接口和Mypper.xml sql映射文件

4.服务层:添加Service接口和ServiceImpl接口实现类

5.逻辑控制层:设计各页面/功能的Cotroller

6.前端视图层

2.加入Mybatis逆向工程后的流程:

MyBatis官方为我们提供了一个逆向工程,通过这个逆向工程,只要建立好数据表,那么MyBatis就会根据这个表自动生成pojo类、dao接口、sql映射文件。

1.加入Mybatis逆向工程的依赖

2.设计数据表

3.配置逆向工程配置信息

4.运行逆向工程

5.得到【pojo类、dao接口、sql映射文件】


二、优缺点:

优点:帮助我们自动生成Java代码,大大加快了我们的开发效率。

缺点:生成的文件太过冗余,不必要的代码过多。尤其是sql映射文件,里面的配置内容太多,对于dao层,提供的方法比较有限,需要自行扩展。

三、使用步骤:

1、创建Maven工程,完善工程结构

 2、引入pom依赖

<!--mysql-->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <scope>runtime</scope>
    </dependency>
    <!-- mybatis依赖 -->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.4.6</version>
    </dependency>
    <!-- mybatis逆向工程依赖 -->
    <dependency>
      <groupId>org.mybatis.generator</groupId>
      <artifactId>mybatis-generator-core</artifactId>
      <version>1.3.7</version>
    </dependency>

3、创建逆向工程的配置文件 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>
   <context id="DB2Tables" targetRuntime="MyBatis3">
     <!-- 去除生成的注解 -->
     <commentGenerator>
        <property name="suppressAllComments" value="true"/>
     </commentGenerator>
     <!-- 数据库连接配置 -->
     <!-- 注意xml中不支持&,用&amp;代替 -->
     <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver" 
     connectionURL="jdbc:mysql://rm-m5e130nm7h37n6v982o.mysql.rds.aliyuncs.com:3306/demo?useUnicode=true&amp;characterEncoding=utf8&amp;useSSL=false&amp;serverTimezone=GMT%2B8"
     userId="xxxxx" password="xxxxxx"></jdbcConnection>
     
     <!-- 处理NUMERIC和DECIMAL类型的策略 -->
     <javaTypeResolver>
         <property name="forceBigDecimals" value="false" />
     </javaTypeResolver>
     
     <!-- 配置pojo生成的位置 -->
     <javaModelGenerator targetPackage="com.ycz.pojo"  targetProject="src/main/java">
        <property name="enableSubPackages" value="true" />
        <property name="trimStrings" value="true" />
     </javaModelGenerator>
     
     <!-- 配置sql映射文件的生成位置 -->
     <sqlMapGenerator targetPackage="com.ycz.mapper" targetProject="src/main/resources">
        <property name="enableSubPackages" value="true" />
        <property name="trimStrings" value="true" />        
     </sqlMapGenerator>
     
     <!-- 配置dao接口的生成位置 -->
     <javaClientGenerator type="XMLMAPPER" targetPackage="com.ycz.dao" 
     targetProject="src/main/java">
        <property name="enableSubPackages" value="true" />
        <property name="trimStrings" value="true" />     
     </javaClientGenerator>
     
     <!-- 指定逆向依据的数据表 -->
     <table tableName="person" domainObjectName="Person"></table>
   </context>
 </generatorConfiguration>

4、自动生成代码程序

一般写一个 text 方法就可以了,能运行就行

public class GeneratorTest {
    
    public static void main(String[] args) throws Exception {
        List<String> warnings = new ArrayList<String>();
        boolean overwrite = true;
        File configFile = new File("src/main/resources/generatorConfig.xml");
        ConfigurationParser cp = new ConfigurationParser(warnings);
        Configuration config = cp.parseConfiguration(configFile);
        DefaultShellCallback callback = new DefaultShellCallback(overwrite);
        MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
        myBatisGenerator.generate(null);
        System.out.println("生成成功!");
    }

}

四、案例展示

一、建立数据表:user、book

二、改写配置文件:

1、数据库连接配置,指定自己的数据库

<!-- 数据库连接配置 -->
        <!-- 注意xml中不支持&,用&amp;代替 -->
        <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
                        connectionURL="jdbc:mysql://localhost:3306/mybatisgenerator"
                        userId="root" password="">
<!--            在逆向生成时,除了会生成 User 类,还会生成一个继承 User 类的UserWithBLOBs 类。
                加入此注解避免生成类的UserWithBLOBs-->
            <property name="nullCatalogMeansCurrent" value="true" />
        </jdbcConnection>

2、配置pojo生成的位置

如果项目过多,保险起见指定为绝对路径

<javaModelGenerator 
targetPackage="org.example.pojo"
targetProject="G:/IDEA_MyProject/MabatisGenerator/src/main/java">
            <property name="enableSubPackages" value="true" />
            <property name="trimStrings" value="true" />
</javaModelGenerator>

3、配置sql映射文件的生成位置

<!-- 配置sql映射文件的生成位置 -->
        <sqlMapGenerator 
targetPackage="static.mapper"
targetProject="G:/IDEA_MyProject/MabatisGenerator/src/main/resources">
            <property name="enableSubPackages" value="true" />
            <property name="trimStrings" value="true" />
        </sqlMapGenerator>

4、配置dao接口的生成位置

<!-- 配置dao接口的生成位置 -->
        <javaClientGenerator type="XMLMAPPER" 
targetPackage="org.example.dao"
targetProject="G:/IDEA_MyProject/MabatisGenerator/src/main/java">
            <property name="enableSubPackages" value="true" />
            <property name="trimStrings" value="true" />
        </javaClientGenerator>

5、指定逆向依据的数据表

<!-- 指定逆向依据的数据表 -->
        <table tableName="user" domainObjectName="User"></table>
        <table tableName="book" domainObjectName="Book"></table>

三、运行生成代码工具类

public class GeneratorTest {

    public static void main(String[] args) throws Exception {
        List<String> warnings = new ArrayList<String>();
        boolean overwrite = true;
        File configFile = new File("G:/IDEA_MyProject/MabatisGenerator/src/main/resources/config/generatorConfig.xml");
        ConfigurationParser cp = new ConfigurationParser(warnings);
        Configuration config = cp.parseConfiguration(configFile);
        DefaultShellCallback callback = new DefaultShellCallback(overwrite);
        MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
        myBatisGenerator.generate(null);
        System.out.println("生成成功!");
    }

}

四、运行结果

1、pojo

 

2、mapper

 

3、mapper.xml

 

4、实例对应的example

 

五、实例对应的example介绍

方法介绍:

逆向工程中会生成实例及实例对应的example,example用于添加查询条件,相当where后面的部分

 

使用案例: