MyBatis Generator 详细配置 demo
MyBatis Generator 是 MyBatis 提供的一个代码生成工具。可以帮我们生成 表对应的持久化对象(po)、操作数据库的接口(dao)、CRUD sql的xml(mapper)。
MyBatis Generator 是一个独立工具,你可以下载它的jar包来运行、也可以在 Ant 和 maven 运行。
目前已知的代码生成器有两种: MyBatis-Plus 和 MyBatis Generator ;前者是后者的加强版,对于MyBatis-Plus的使用可以参见: MyBatis-Plus 3.4.1 代码生成器 配置demo
0、使用环境
- 开发工具:IDEA
- 数据库:mysql
- 包管理工具:maven
1、配置 MyBatis Generator Config
MyBatis Generator 插件启动后,会根据你在 pom 中配置都路径找到该配置文件。
这个配置文件才是详细都配置 MyBatis Generator 生成代码的各种细节。
其中最重要的就是 context ,你的配置文件至少得包含一个context
- 配置示例: - 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83- <?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>
 <!-- 引入配置文件 -->
 <properties resource="generator.properties"/>
 <!-- 一个数据库一个context,context的子元素必须按照它给出的顺序
 property*,plugin*,commentGenerator?,jdbcConnection,javaTypeResolver?,
 javaModelGenerator,sqlMapGenerator?,javaClientGenerator?,table+
 -->
 <context id="MySqlContext" targetRuntime="MyBatis3" defaultModelType="flat">
 <property name="beginningDelimiter" value="`"/>
 <property name="endingDelimiter" value="`"/>
 <property name="javaFileEncoding" value="UTF-8"/>
 <!-- 为模型生成序列化方法-->
 <plugin type="org.mybatis.generator.plugins.SerializablePlugin"/>
 <!-- 为生成的Java模型创建一个toString方法 -->
 <plugin type="org.mybatis.generator.plugins.ToStringPlugin"/>
 <!-- 注释 -->
 <!--注释生成配置-->
 <!--可以自定义生成model的代码注释-->
 <commentGenerator type="com.macro.mall.tiny.mbg.CommentGenerator">
 <!-- 是否去除自动生成的注释 true:是 : false:否 -->
 <property name="suppressAllComments" value="true"/>
 <property name="suppressDate" value="true"/>
 <property name="addRemarkComments" value="true"/>
 </commentGenerator>
 <!--配置数据库连接-->
 <jdbcConnection driverClass="${jdbc.driverClass}"
 connectionURL="${jdbc.connectionURL}"
 userId="${jdbc.userId}"
 password="${jdbc.password}">
 <!--解决mysql驱动升级到8.0后不生成指定数据库代码的问题-->
 <property name="nullCatalogMeansCurrent" value="true" />
 </jdbcConnection>
 <!--实体类配置-->
 <!--指定生成model的路径-->
 <javaModelGenerator targetPackage="com.macro.mall.tiny.mbg.model"
 targetProject="mall-tiny-01\src\main\java">
 <property name="enableSubPackages" value="false"/>
 <property name="trimStrings" value="true"/>
 </javaModelGenerator>
 <!--映射文件的配置-->
 <!--指定生成mapper.xml的路径-->
 <sqlMapGenerator targetPackage="com.macro.mall.tiny.mbg.mapper"
 targetProject="mall-tiny-01\src\main\resources">
 <property name="enableSubPackages" value="false"/>
 </sqlMapGenerator>
 <!--指定生成mapper接口的的路径-->
 <javaClientGenerator type="XMLMAPPER"
 targetPackage="com.macro.mall.tiny.mbg.mapper"
 targetProject="mall-tiny-01\src\main\java">
 <property name="enableSubPackages" value="false"/>
 </javaClientGenerator>
 <!-- schema为数据库名,oracle需要配置,mysql不需要配置。
 tableName为对应的数据库表名
 domainObjectName 是要生成的实体类名(可以不指定,默认按帕斯卡命名法将表名转换成类名)
 enableXXXByExample 默认为 true, 为 true 会生成一个对应Example帮助类,帮助你进行条件查询,不想要可以设为false
 -->
 <!-- <table schema="" tableName="t_admin" domainObjectName="Admin"-->
 <!-- enableCountByExample="false" enableDeleteByExample="false" enableSelectByExample="false"-->
 <!-- enableUpdateByExample="false" selectByExampleQueryId="false"-->
 <!-- >-->
 <!-- <!–是否使用实际列名,默认为false–>-->
 <!-- <!–<property name="useActualColumnNames" value="false" />–>-->
 <!-- </table>-->
 <!--生成全部表tableName设为%-->
 <table tableName="pms_brand">
 <generatedKey column="id" sqlStatement="MySql" identity="true"/>
 </table>
 </context>
 </generatorConfiguration>
2、使用MyBatis Generator
2.1 使用 Maven 插件运行
pom.xml 添加配置
| 1 |  | 
配置好后,双击 maven 中的 MyBatis Generator 运行
2.1.1 引入 MyBatis Generator 插件
| 1 |  | 
2.1.2 配置 MyBatis Generator config 文件路径
MyBatis Generator 插件需要根据一个 MyBatis Generator config 文件,来具体运行
配置如下,版本我用的是目前最新的版本 1.3.7
| 1 |  | 
注意,这个路径是你的配置文件相对于该 pom 文件的路径
2.1.3 允许覆盖生成的文件
有时候我们的数据库表添加了新字段,需要重新生成对应的文件。常规做法是手动删除旧文件,然后在用 MyBatis Generator 生成新文件。当然你也可以选择让 MyBatis Generator 覆盖旧文件,省下手动删除的步骤。
| 1 |  | 
值得注意的是,MyBatis Generator 只会覆盖旧的 po、dao、而 *mapper.xml 不会覆盖,而是追加,这样做的目的是防止用户自己写的 sql 语句一不小心都被 MyBatis Generator 给覆盖了
- 问题解决
以前一直以为是MyBatis Generator生成的问题,直接删除mapper.xml所在文件夹,重新生成就好了,现在提供一种MyBatis Generator官方提供的解决方法。
- 升级MyBatis Generator的版本
MyBatis Generator 在1.3.7版本提供了解决方案,我们目前使用的版本为1.3.3。
| 1 |  | 
- 在generatorConfig.xml文件中添加覆盖mapper.xml的插件
| 1 |  | 
2.1.4 添加数据库驱动依赖
MyBatis Generator 需要链接数据库,肯定是需要对应数据库驱动的依赖的。
如下,给 MyBatis Generator 添加数据库驱动依赖
| 1 |  | 
大部分情况下,我们的项目中已经配置过了对应数据库的JDBC驱动。
现在在插件中又配置一次,感觉有些冗余,maven 提供了 includeCompileDependencies 属性,让我们在插件中引用 dependencies 的依赖,这样就不需要重复配置了。
| 1 |  | 
2.1.5 添加其他依赖
一般配置了 includeCompileDependencies 后就不需要配置其他依赖了,因为 includeCompileDependencies 会将当前 pom 的 dependencies 中所以 Compile 期的依赖全部添加到生成器的类路径中。
但有的人不想配置 includeCompileDependencies ,或者想在MyBatis Generator插件中使用另一个版本的依赖,就可以配置 dependencies
2.2 Java 代码运行
| 1 |  | 
3、自定义注释生成器
| 1 |  |