一、添加MyBatis和数据库驱动依赖
1
2
3
4
5
6
7
8
9
10
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.28</version>
</dependency>
二、引入MyBatis Generator插件
1
2
3
4
5
6
7
8
9
10
11
12
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>${mybatis-generator-core-version}</version>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>1.3.7</version>
</dependency>
</dependencies>
</plugin>
三、配置MyBatis Generator插件
3.1 配置MyBatis Generator config文件路径
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<build>
<plugins>
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.7</version>
<configuration>
<!--mybatis的代码生成器的配置文件-->
<configurationFile>
src/main/resources/mybatis-generator-config.xml
</configurationFile>
</configuration>
</plugin>
<plugins>
</build>
注意,这个路径是配置文件相对于该pom文件的路径
3.2 允许覆盖生成的文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<build>
<plugins>
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.7</version>
<configuration>
<!--mybatis的代码生成器的配置文件-->
<configurationFile>
src/main/resources/mybatis-generator-config.xml
</configurationFile>
<!--允许覆盖生成的文件-->
<overwrite>true</overwrite>
</configuration>
</plugin>
<plugins>
</build>
3.3 添加数据库驱动依赖
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
<build>
<plugins>
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.7</version>
<configuration>
<!--mybatis的代码生成器的配置文件-->
<configurationFile>
src/main/resources/mybatis-generator-config.xml
</configurationFile>
<!--允许覆盖生成的文件-->
<overwrite>true</overwrite>
</configuration>
<dependencies>
<!-- mysql的JDBC驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.17</version>
</dependency>
</dependencies>
</plugin>
<plugins>
</build>
大部分情况下,我们的项目中已经配置过了对应数据库的JDBC驱动,现在在插件中又配置一次,感觉有些冗余,Maven提供了includeCompileDependencies属性,让我们在插件中引用dependencies的依赖,这样就不需要重复配置了
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<build>
<plugins>
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.7</version>
<configuration>
<!--mybatis的代码生成器的配置文件-->
<configurationFile>
src/main/resources/mybatis-generator-config.xml
</configurationFile>
<!--允许覆盖生成的文件-->
<overwrite>true</overwrite>
<!--将当前pom的依赖项添加到生成器的类路径中-->
<includeCompileDependencies>true</includeCompileDependencies>
</configuration>
</plugin>
<plugins>
</build>
3.4 配置MyBatis Generator Config
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
<?xml version="1.0" encoding="UTF-8" ?>
<!--mybatis的代码生成器相关配置-->
<!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="application-dev.properties"/>
<!-- 一个数据库一个context,context的子元素必须按照以下给出的个数、顺序配置
(MyBatis Generator对配置的循序还有要求)
property (0..N)
plugin (0..N)
commentGenerator (0 or 1)
jdbcConnection (需要connectionFactory 或 jdbcConnection)
javaTypeResolver (0 or 1)
javaModelGenerator (至少1个)
sqlMapGenerator (0 or 1)
javaClientGenerator (0 or 1)
table (1..N)
-->
<!-- id: 随便填,保证多个context id不重复就行
defaultModelType: 可以不填,默认值conditional,flat表示一张表对应一个po
targetRuntime:可以不填,默认值MyBatis3,常用的还有MyBatis3Simple
这个配置会影响生成的dao和mapper.xml的内容
targetRuntime = MyBatis3Simple,生成的接口会少很多,只包含最最常用的
-->
<context id="myContext" targetRuntime="MyBatis3" defaultModelType="flat">
<!-- 这个插件给生成的Java模型对象增加了equals和hashCode方法 -->
<!-- <plugin type="org.mybatis.generator.plugins.EqualsHashCodePlugin"/> -->
<!-- 用来配置生成的注释。默认是生成注释的,并且会生成时间戳 -->
<commentGenerator>
<!-- 是否不生成注释 -->
<property name="suppressAllComments" value="true"/>
<!-- 不希望生成的注释中包含时间戳 -->
<!-- <property name="suppressDate" value="true"/> -->
<!-- 添加db表中字段的注释,只有suppressAllComments为false时才生效 -->
<!-- <property name="addRemarkComments" value="true"/> -->
</commentGenerator>
<!-- JDBC连接 -->
<jdbcConnection driverClass="${spring.datasource.driverClassName}"
connectionURL="${spring.datasource.url}"
userId="${spring.datasource.username}"
password="${spring.datasource.password}">
<!-- 高版本的mysql-connector-java需要设置nullCatalogMeansCurrent=true -->
<property name="nullCatalogMeansCurrent" value="true"/>
</jdbcConnection>
<!-- 类型转换 -->
<javaTypeResolver>
<!-- 是否使用bigDecimal,默认false。
false,把JDBC DECIMAL和NUMERIC类型解析为Integer
true,把JDBC DECIMAL和NUMERIC类型解析为java.math.BigDecimal
-->
<property name="forceBigDecimals" value="true"/>
<!-- 默认false
false,将所有JDBC的时间类型解析为java.util.Date
true,将JDBC的时间类型按如下规则解析
DATE -> java.time.LocalDate
TIME -> java.time.LocalTime
TIMESTAMP -> java.time.LocalDateTime
TIME_WITH_TIMEZONE -> java.time.OffsetTime
TIMESTAMP_WITH_TIMEZONE -> java.time.OffsetDateTime
-->
<!-- <property name="useJSR310Types" value="false"/> -->
</javaTypeResolver>
<!-- 配置po生成的包路径和项目路径 -->
<javaModelGenerator targetPackage="com.wqlm.boot.user.po"
targetProject="src/main/java">
<!-- 是否让 schema 作为包的后缀,默认为false -->
<!-- <property name="enableSubPackages" value="false"/> -->
<!-- 是否针对string类型的字段在set方法中进行修剪,默认false -->
<property name="trimStrings" value="true"/>
</javaModelGenerator>
<!-- 生成Mapper.xml文件 -->
<sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources">
<!-- <property name="enableSubPackages" value="false"/> -->
</sqlMapGenerator>
<!-- 生成XxxMapper.java接口
type="XMLMAPPER"会将接口的实现放在mapper.xml中,推荐这样配置
type="ANNOTATEDMAPPER",接口的实现通过注解写在接口上面
如果采用这种方式,不会生成mapper.xml也不用配置<sqlMapGenerator>,
但是采用注解来实现接口应对简单查询还好,如果是复杂查询并不如xml方便
所以还是建议将type配置成XMLMAPPER
-->
<javaClientGenerator targetPackage="com.wqlm.boot.user.dao"
targetProject="src/main/java" type="XMLMAPPER">
<!-- <property name="enableSubPackages" value="false"/> -->
</javaClientGenerator>
<!-- 一个table对应一张表,如果想同时生成多张表,需要配置多个table
schema为数据库名,Oracle需要配置,MySQL不需要配置。
tableName为对应的数据库表名
domainObjectName是要生成的实体类名(可以不指定,默认按帕斯卡命名法将表名转换成类名)
enableXXXByExample默认为true, 为true会生成一个对应Example帮助类,
帮助你进行条件查询,不想要可以设为false
-->
<table schema="" tableName="user" domainObjectName="User"
enableCountByExample="false" enableDeleteByExample="false"
enableSelectByExample="false"
enableUpdateByExample="false" selectByExampleQueryId="false">
<!-- 是否使用实际列名,默认为false -->
<!-- <property name="useActualColumnNames" value="false" /> -->
</table>
</context>
</generatorConfiguration>
四、使用MyBatis Generator
配置好后,双击Maven中的MyBatis Generator运行