使用mybatis-generator-maven-plugin自动生成代码

子车轶
2023-12-01

1.在pom.xml里引入插件

<plugin>
   <groupId>org.mybatis.generator</groupId>
   <artifactId>mybatis-generator-maven-plugin</artifactId>
   <version>1.3.7</version>
   <!-- 添加一个mysql的依赖,防止等会找不到driverClass -->
   <dependencies>
      <dependency>
         <groupId>mysql</groupId>
         <artifactId>mysql-connector-java</artifactId>
         <version>${mysql.driver.version}</version>
         <scope>runtime</scope>
      </dependency>
   </dependencies>
   <!-- mybatisGenerator 的配置 -->
   <configuration>
      <!-- generator 工具配置文件的位置 -->
      <configurationFile>src/main/resources/generatorConfig.xml</configurationFile>
      <!-- 是否覆盖 -->
      <!-- 此处要特别注意,如果不加这个设置会导致每次运行都会在原目录再次创建-->
      <overwrite>true</overwrite>
   </configuration>
</plugin>

2.新建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="MySQLTables" targetRuntime="MyBatis3" defaultModelType="flat">

        <!-- 公共设置 -->
        <commentGenerator>
            <!-- 是否取消自动生成时的注释 -->
            <property name="suppressAllComments" value="true"/>
            <!-- 是否取消在注释中加上时间 -->
            <property name="suppressDate" value="true"/>
        </commentGenerator>

        <!-- 链接数据库的配置  MySQL8之前的驱动com.mysql.jdbc.Driver,新的驱动com.mysql.cj.jdbc.Driver,并且要加时区-->
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                        connectionURL="jdbc:mysql://******:3306/***?useUnicode=true&amp;characterEncoding=utf-8&amp;tinyInt1isBit=false&amp;allowMultiQueries=true"
                        userId="root" password="root"/>

        <!-- 关于生成实体类的设置 -->
        <!-- targetPackage 生成代码的目标目录 -->
        <!-- targetProject 目录所属位置 -->
        <javaModelGenerator targetPackage="com.test.modules.test.entity" targetProject="src/main/java">
            <!-- 在targetPackge的基础上根据schema再生成一层package 默认flase -->
            <property name="enableSubPackages" value="true"/>
            <!-- 是否在get方法中 对String类型的字段做空的判断 -->
            <property name="trimStrings" value="true"/>
            <!-- 是否生成一个包含所有字段的构造器 -->
            <property name="constructorBased" value="false"/>
            <!-- 是否创建一个不可变类-->
            <property name="immutable" value="false"/>
        </javaModelGenerator>

        <!--关于生成映射文件的设置-->
        <sqlMapGenerator targetPackage="mappings.modules.test" targetProject="src/main/resources">
            <!--同上-->
            <property name="enableSubPackages" value="true"/>
        </sqlMapGenerator>

        <!--关于生成dao层的设置-->
        <javaClientGenerator type="mapper" targetPackage="com.test.modules.test.dao" targetProject="src/main/java">
            <!--同上-->
            <property name="enableSubPackages" value="true"/>
        </javaClientGenerator>

        <!--需要生成的代码对应的表名 tableName 代表你的数据库表,domainObjectName 映射后的对象名称-->
        <table tableName="sys_user" schema="" domainObjectName="Test"
               enableCountByExample="false" enableUpdateByExample="false"
               enableDeleteByExample="false" enableSelectByExample="false"
               selectByExampleQueryId="false">
        </table>
    </context>
</generatorConfiguration>

3.在maven里运行插件即可。

 类似资料: