【Springboot】解放双手,集成mybatis-generator插件

135 阅读1分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第30天,点击查看活动详情

代码生成插件对于开发人员来说是一款必不可少的神奇,当你面对一大堆表又不想一行行敲对应的字段时,可以通过代码生成插件来替你解决。 在此之前,介绍过Springboot集成mybatis-plus的代码生成器,跟mybatis-plus代码生成器相比,mybatis-generator是一款基础的代码生成器,应用也较为广泛,只需要引入mybatis提供的生成器依赖即可。

1、引入maven坐标到pom.xml文件

<!-- MyBatis 生成器 -->
<dependency>
    <groupId>org.mybatis.generator</groupId>
    <artifactId>mybatis-generator-core</artifactId>
    <version>1.3.3</version>
</dependency>

2、配置maven的plugin

这里generatorConfig.xml文件路径一定要填写正确,不然会读取不到代码生成器的配置。

<!-- mybatis generator 自动生成代码插件 -->
<plugin>
    <groupId>org.mybatis.generator</groupId>
    <artifactId>mybatis-generator-maven-plugin</artifactId>
    <version>1.3.2</version>
    <!-- 配置generatorConfig.xml配置文件的路径 -->
    <configuration>
        <!--指定配置文件的名称。默认值:${basedir}/src/main/resources/generatorConfig.xml-->
        <configurationFile>${basedir}/src/test/resources/generatorConfigTk.xml</configurationFile>
        <!--如果指定了该参数,如果生成的java文件存在已经同名的文件,新生成的文件会覆盖原有的文件。
        如果没有指定该参数,如果存在同名的文件,MBG会给新生成的代码文件生成一个唯一的名字(例如: MyClass.java.1, MyClass.java.2 等等)。
        重要: 生成器一定会自动合并或覆盖已经生成的XML文件。默认值:false-->
        <overwrite>true</overwrite>
        <!--如果指定该参数,执行过程会输出到控制台-->
        <verbose>true</verbose>
    </configuration>
    <!-- MBG插件的依赖信息 -->
    <dependencies>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>${mysql.connector.version}</version>
        </dependency>
        <dependency>
            <groupId>tk.mybatis</groupId>
            <artifactId>mapper</artifactId>
            <version>${mapper.version}</version>
        </dependency>
    </dependencies>
</plugin>

3、创建以及配置代码生成器的配置文件

可以设置代码输出路径、代码生成是否生成注释

<?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">
<!--上面URL可能报错,但不影响-->
<generatorConfiguration>
   <!-- 数据库驱动:选择你的本地硬盘上面的数据库驱动包-->
<!--   <classPathEntry  location="C:\Users\Administrator.m2\repository\mysql\mysql-connector-java\8.0.13\mysql-connector-java-8.0.13.jar"/>-->
   <classPathEntry  location="C:\Users\XXX\AppData\Roaming\JetBrains\IntelliJIdea2020.1\plugins\MyBatisCodeHelper-Pro\lib\mysql-connector-java-8.0.11.jar"/>
   <context id="DB2Tables"  targetRuntime="MyBatis3">

      <!-- 配置通用Mapper的MBG插件相关信息 加上这个才会生成通用Mapper-->
      <plugin type="tk.mybatis.mapper.generator.MapperPlugin">
         <property name="mappers" value="tk.mybatis.mapper.common.Mapper" />
      </plugin>
      <plugin type="org.mybatis.generator.plugins.SerializablePlugin" />

      <commentGenerator>
         <property name="suppressDate" value="true"/>
         <!-- 是否去除自动生成的注释 true:是 : false:否 -->
         <property name="suppressAllComments" value="true"/>
      </commentGenerator>

      <!--数据库链接URL,用户名、密码 -->
      <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
                  connectionURL="jdbc:mysql://localhost:3306/jw_recovery_prod?serverTimezone=GMT%2B8"
                  userId="root" password="123">
         <property name="nullCatalogMeansCurrent" value="true"/>
      </jdbcConnection>

      <javaTypeResolver>
         <property name="forceBigDecimals" value="false"/>
      </javaTypeResolver>
      <!-- 生成模型的包名和位置-->
      <javaModelGenerator targetPackage="com.recovery.bean.entity" targetProject="src/main/java">
         <property name="enableSubPackages" value="true"/>
         <property name="trimStrings" value="true"/>
      </javaModelGenerator>

      <!-- 生成映射文件的包名和位置-->
      <sqlMapGenerator targetPackage="com.recovery.mapper.extend" targetProject="src/main/java">
         <property name="enableSubPackages" value="true"/>
      </sqlMapGenerator>
      <!-- 生成DAO的包名和位置-->
      <javaClientGenerator type="XMLMAPPER" targetPackage="com.recovery.mapper.extend" targetProject="src/main/java">
         <property name="enableSubPackages" value="true"/>
      </javaClientGenerator>

      <!-- 要生成的表 tableName是数据库中的表名或视图名 domainObjectName是实体类名-->
      <table tableName="jw_activity_user" domainObjectName="ActivityUser" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"/>
   </context>
</generatorConfiguration>
  • sqlMapGenerator 设置生成映射文件的包名和位置

  • javaModelGenerator 设置生成模型的包名和位置

  • javaClientGenerator 设置生成映射文件的包名和位置

4、生成代码

image.png

最后:

mybatis-generator生成代码只可以生成实体类以及mapper文件,controller和service是无法生成的。