本文我们主要实战Mybatis官方的代码生成器:Mybatis Generator(MBG),掌握它以后,可以简化大部分手写代码,我们只需要写复杂逻辑代码!
通过前几篇,我们掌握了在SpringBoot下Mybatis的基本用法,操作步骤回顾一下:
在实际开发中,你会发现有很多重复的工作:
重复不符合我们程序员的风格:
那么在Mybatis里,这些当然也不在话下,Mybatis官方为我们提供了非常好用的代码生成器:Mybatis Generator (MBG) 。
本文就带大家实战一下Mybatis Generator,用它生成实战项目全部表的PO对象和基本增删改查代码!
Mybatis Generator(MBG)是Mybatis官方提供的一个代码生成工具,它可以根据数据库表自动生成对应的Java Model、Mapper和XML文件,甚至还可以生成一些高级查询功能,使用Mybatis-Generator可以大大降低开发者的工作量,提高开发效率!
支持使用Maven插件生成,也支持编写Java代码生成,还有命令行等等多种方式!
支持生成XML映射文件风格的代码,也支持生成全注解风格的代码!
首先在工程tg-book-dal的pom.xml中,根节点project下添加build节点,如下:
src/main/resources true org.mybatis.generator mybatis-generator-maven-plugin 1.3.7 true true mysql mysql-connector-java 8.0.21
然后刷新tg-book-dal的Maven依赖,你就能看到mybatis-generator插件了,如下图:

注意,这时生成时会报错,因为我们还需要添加配置文件,接着向下看.
在tg-book-dal 的 src/main/resources 下 添加配置文件: generatorConfig.xml ,用于配置生成风格,数据库连接、生成代码包路径、生成哪些表等等,各配置参数详解参考注释:
注意:==我增加了几个实用的可选配置,像生成时覆盖原文件、去除注释、自增主键列、columnOverride ==
上面配置的是MyBatis3Simple风格,只配置了一个表:user,双击插件的mybatis-generator:generate以后,生成的代码如下:

MyBatis3Simple风格生成的代码比较精简,看一看UserMapper的接口方法,只有基本的增删改查方法:
public interface UserMapper {
int deleteByPrimaryKey(Integer id);
int insert(User record);
User selectByPrimaryKey(Integer id);
List selectAll();
int updateByPrimaryKey(User record);
}
我们再看看MyBatis3风格,只需要将 targetRuntime=“MyBatis3Simple” 修改为 targetRuntime=“MyBatis3”,然后再双击插件的mybatis-generator:generate,就可以看到增加了 “by example” 和 “selective” 方法

| 属性 | 说明 |
|---|---|
| enableSelectByExample | 是否启用生成selectByExample |
| enableDeleteByExample | 是否启用生成deleteByExample |
| enableCountByExample | 是否启用生成countByExample |
| enableUpdateByExample | 是否启用生成updateByExample和updateByExampleSelective |
只需要将 targetRuntime=“MyBatis3” 修改为 targetRuntime=“MyBatis3DynamicSql”。
生成的代码是全注解风格的,也就不会生成UserMapper.xml和UserExample类,而是新生成了UserDynamicSqlSupport类。
需要增加mybatis-dynamic-sql依赖包:
org.mybatis.dynamic-sql mybatis-dynamic-sql 1.1.4
除了使用插件运行方式来生成,我们还可以以Java代码方式运行,添加mybatis-generator-core依赖包,如下:
org.mybatis.generator mybatis-generator-core 1.3.7
添加main方法,如下:
package org.tg.book.dal;
import org.mybatis.generator.api.MyBatisGenerator;
import org.mybatis.generator.config.Configuration;
import org.mybatis.generator.config.xml.ConfigurationParser;
import org.mybatis.generator.exception.InvalidConfigurationException;
import org.mybatis.generator.exception.XMLParserException;
import org.mybatis.generator.internal.DefaultShellCallback;
import java.io.File;
import java.io.IOException;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class MybatisGeneratorRunner {
public static void main(String[] args) throws XMLParserException, IOException, InvalidConfigurationException, SQLException, InterruptedException {
List warnings = new ArrayList();
boolean overwrite = true;
// 使用xml配置文件的方式
File configFile = new File(MybatisGeneratorRunner.class.getClassLoader().getResource("generatorConfig.xml").getPath());
ConfigurationParser cp = new ConfigurationParser(warnings);
Configuration config = cp.parseConfiguration(configFile);
// 使用纯Java代码配置的方式, 相当于把 generatorConfig.xml配置的都用java代码配置到config中
// config = new Configuration();
DefaultShellCallback callback = new DefaultShellCallback(overwrite);
MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
myBatisGenerator.generate(null);
System.out.println(warnings);
}
}
注意:我执行后生成到父项目下了🤣,需要修改generatorConfig.xml 将targetProject加上项目名称,如下:
targetProject加上tg-book-dal以后用插件生成,又提示目录找不到,汗(⊙﹏⊙)b
[WARNING] The specified target project directory tg-book-dal/src/main/resources does not exist [WARNING] The specified target project directory tg-book-dal/src/main/java does not exist [WARNING] The specified target project directory tg-book-dal/src/main/java does not exist [WARNING] The specified target project directory tg-book-dal/src/main/java does not exist
一共8张表,主要注意点:
除了user的另外7张表配置:
mbg包的代码我们不做任何修改,为了便于区分,我们将自定义的PO和Mapper单独放到ext包下,命名以Ext结尾。
最终结构dal的 mapper和po包,如下:

最终的mapper XML映射文件,如下:

养成好习惯,一步一提交!

本文主要介绍了Mybatis Generator (MBG)生成代码的2种生成方式(当然还支持其它方式):
以及generatorConfig.xml配置的3种生成风格: