一、引入依赖
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>${mybatis.plus.generator}</version>
<scope>test</scope>
<optional>true</optional>
</dependency>
<!-- mybatis-plus-generator中已有依赖,直接引入即可 -->
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<scope>test</scope>
<optional>true</optional>
</dependency>
备注:这里
mybatis-plus-generator
的最新版本是3.5.2。
二、代码示例
public class MybatisPlusCodeAutoGeneration {
private static final String URL = "jdbc:mysql://localhost:3306/rbac";
private static final String USERNAME = "root";
private static final String PASSWORD = "root";
/**
* 自动生成代码输出目录,这里默认类路径下的src/test/java/com/universe包下,即当前工程的test目录下。
*/
private static final String OUTPUT_DIR = System.getProperty("user.dir") + File.separator + "src/test/java/com/universe";
public static void main(String[] args) {
FastAutoGenerator.create(URL, USERNAME, PASSWORD)
// 开启fileOverrride重新旧文件,disableOpenDir禁用代码生成后打开输出目录对话框
.globalConfig(builder -> builder.author("liuyalou").fileOverride().disableOpenDir().outputDir(OUTPUT_DIR))
// parent指定生成的代码在哪个包下,entity可以指定实体(DO)所在的包名
.packageConfig(builder -> builder.parent("com.universe").entity("pojo.domain"))
// addInclude指定包含的表名,不调用该方法默认为所有表生成代码;addTablePrefix可以过滤表前缀,即t_user变成user
.strategyConfig(builder -> builder.addInclude("t_user").addTablePrefix("t_")
// 禁用为实体类生成序列化ID;formatFileName格式化生成的实体类名称,即t_user -> UserDO
.entityBuilder().disableSerialVersionUID().formatFileName("%sDO")
// formatMapperFileName格式化Mapper接口名称,即t_user -> UserMapper
// formatXmlFileName格式化Mapper.xml文件名称,即t_user -> UserMapper.xml
.mapperBuilder().formatMapperFileName("%sMapper").formatXmlFileName("%sMapper")
.build()
)
// MyBatis-Plus代码生成器是通过模板引擎来渲染文件的,默认模板引擎是Velocity,根据依赖我们使用Freemarker
.templateEngine(new FreemarkerTemplateEngine())
.execute();
}
}
备注:
1、具体配置参考 MyBatis Plus代码生成器配置。
2、更多代码示例参考 MyBatis Plus Generator代码示例。
三、测试结果
1、控制台输出
16:43:03.444 [main] DEBUG com.baomidou.mybatisplus.generator.AutoGenerator - ==========================准备生成文件...==========================
16:43:03.910 [main] DEBUG com.baomidou.mybatisplus.generator.config.querys.MySqlQuery - 执行SQL:show table status WHERE 1=1 AND NAME IN ('t_user')
16:43:03.958 [main] DEBUG com.baomidou.mybatisplus.generator.config.querys.MySqlQuery - 返回记录数:1,耗时(ms):45
16:43:04.016 [main] DEBUG com.baomidou.mybatisplus.generator.config.querys.MySqlQuery - 执行SQL:show full fields from `t_user`
16:43:04.030 [main] DEBUG com.baomidou.mybatisplus.generator.config.querys.MySqlQuery - 返回记录数:8,耗时(ms):28
16:43:04.246 [main] DEBUG com.baomidou.mybatisplus.generator.AutoGenerator - ==========================文件生成完成!!!==========================
2、生成的代码
可以看到com.universe
包下有自动生成的代码,如下:
备注:建议配置
packageConfig(builder -> builder.parent("com.universe"))
时,包名与实际工程包目录结构保持一致,这样生成的代码不用修改可以直接复制。