前言

这段时间转换了新的技术栈,正在学习和使用Java web开发的相关语言。公司里主要是springboot2.x和Mybatis,经过学习和摸索,下面记录一下Springboot2.x 集成Mybatis官方代码生成器的步骤,以供后续学习使用。

这里用到的数据库是postgresql,pom.xml引入postgresql的相关依赖:

1
<dependency>
2
    <groupId>org.mybatis.spring.boot</groupId>
3
    <artifactId>mybatis-spring-boot-starter</artifactId>
4
    <version>2.2.0</version>
5
</dependency>
6
<dependency>
7
    <groupId>org.postgresql</groupId>
8
    <artifactId>postgresql</artifactId>
9
    <scope>runtime</scope>
10
</dependency>
11
<dependency>
12
    <groupId>org.mybatis.generator</groupId>
13
    <artifactId>mybatis-generator-core</artifactId>
14
    <version>1.4.0</version>
15
</dependency>

一、官网Quick Start Guide

经过这段时间的学习发现,学习一项新的东西,最开始还是去看官网的介绍比较清晰明了。

官网:MyBatis Generator

基本步骤就是:

  1. 创建配置文件
  2. 运行MBG命令
  3. 生成代码

官网有4种不同的配置示例,考虑到团队协作情况,这次使用的还是Mybatis3。

image-20210807111105588

第一种方式MyBatis3DynamicSql是目标比较先进的,但是考虑到学习成本和该插件还在持续不断的拓展中,还是先学习Mybatis3先。

官网配置示例如下:

1
<!DOCTYPE generatorConfiguration PUBLIC
2
 "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
3
 "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
4
<generatorConfiguration>
5
  <context id="simple" targetRuntime="MyBatis3Simple">
6
     <!-- 数据库配置-->
7
    <jdbcConnection driverClass="org.hsqldb.jdbcDriver"
8
        connectionURL="jdbc:hsqldb:mem:aname" />
9
	<!-- model类的位置 -->
10
    <javaModelGenerator targetPackage="example.model" targetProject="src/main/java"/>
11
	<!-- mapper xml的位置 -->
12
    <sqlMapGenerator targetPackage="example.mapper" targetProject="src/main/resources"/>
13
	<!-- mapper类的位置 -->
14
    <javaClientGenerator type="XMLMAPPER" targetPackage="example.mapper" targetProject="src/main/java"/>
15
	<!--要生成的表名-->
16
    <table tableName="FooTable" />
17
  </context>
18
</generatorConfiguration>

二、使用Maven运行Mybatis生成器

官网有几种运行Mybatis生成器的方式,如命令行,Ant,java,Maven等,这里使用Maven。

在pom.xml的<plugins>中添加如下代码:

1
<!--mybatis自动代码生成器插件-->
2
<plugin>
3
    <groupId>org.mybatis.generator</groupId>
4
    <artifactId>mybatis-generator-maven-plugin</artifactId>
5
    <version>1.3.6</version>
6
    <configuration>
7
        <!--配置文件位置-->
8
        <configurationFile>src/main/resources/generator/mybatis-generator-config.xml</configurationFile>
9
        <overwrite>true</overwrite>
10
        <verbose>true</verbose>
11
    </configuration>
12
    <dependencies>
13
        <dependency>
14
            <groupId>org.postgresql</groupId>
15
            <artifactId>postgresql</artifactId>
16
            <version>42.2.18</version>
17
        </dependency>
18
    </dependencies>
19
</plugin>

注意:要把<configurationFile>修改成你自己的配置文件所在位置。

mybatis代码生成器配置文件mybatis-generator-config.xml

1
<?xml version="1.0" encoding="UTF-8"?>
2
<!DOCTYPE generatorConfiguration
3
        PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
4
        "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
5
<generatorConfiguration>
6
7
    <context id="PostgreSql" targetRuntime="MyBatis3" defaultModelType="flat">
8
        <!-- 自动检查关键字,为关键字增加反引号 -->
9
        <property name="autoDelimitKeywords" value="true"/>
10
        <property name="beginningDelimiter" value="`"/>
11
        <property name="endingDelimiter" value="`"/>
12
13
        <!-- 生成的实体类添加toString()方法 -->
14
        <plugin type="org.mybatis.generator.plugins.ToStringPlugin"/>
15
16
        <!-- 不生成注释 -->
17
        <commentGenerator>
18
            <property name="suppressAllComments" value="true"/>
19
        </commentGenerator>
20
21
        <!-- 数据库连接 -->
22
        <jdbcConnection driverClass="org.postgresql.Driver"
23
                        connectionURL="jdbc:postgresql://localhost:5432/postgres"
24
                        userId="postgres"
25
                        password="123456">
26
        </jdbcConnection>
27
28
        <!-- model类的位置 -->
29
        <javaModelGenerator targetProject="src\main\java"
30
                            targetPackage="com.study.mybatis.model"/>
31
32
        <!-- mapper xml的位置 -->
33
        <sqlMapGenerator targetProject="src\main\resources"
34
                         targetPackage="mapper"/>
35
36
        <!-- mapper类的位置 -->
37
        <javaClientGenerator targetProject="src\main\java"
38
                             targetPackage="com.study.mybatis.mapper"
39
                             type="XMLMAPPER"/>
40
41
        <!--要生成的表名-->
42
        <table schema="public" tableName="company"/>
43
        <table schema="public" tableName="company_type"/>
44
    </context>
45
</generatorConfiguration>

三、执行maven命令生成代码:

image-20210807163132432

执行后生成代码如下:

image-20210807163239822