前言
代码生成器,解放双手。mybatis-plus的代码生成器功能强大,使用方便,这里记录一下案例。本案例使用MySQL数据库的三张表
appro_flow_detail
,appro_flow_main
,security_key_config
结果预览
pom依赖
同时也把
swagger
的注解生成,因此使用了swagger
相关的依赖。mybatis-plus.version
= 3.5.1
<!--Mybatis-plus-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>${mybatis-plus.version}</version>
<!--
<version>3.5.2</version>
-->
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>${mybatis-plus.version}</version>
</dependency>
<!--代码生成器需要使用该依赖,否则就会报错-->
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
</dependency>
<!--Swagger-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
代码案例
/**
* @author: lvzb31988
* @date: 2023/03/06 20:45
*/
public class Generator {
static String URL = "jdbc:mysql://127.0.0.1:3306/demo?useUnicode=true&characterEncoding=utf-8&useSSL=false&useInformationSchema=true&serverTimezone=Asia/Shanghai&autoReconnect=true&failOverReadOnly=false";
static String USERNAME = "root";
static String PASSWORD = "123456";
static String PACKAGE_PATH = "com.example.mybatis.plus";
static List<String> TABLES = List.of("appro_flow_detail", "appro_flow_main", "security_key_config");
@Test
void codeGenerator() {
// 这里的System.getProperty("user.dir") 才会输出zlv11下的内容
System.out.println(System.getProperty("user.dir"));
FastAutoGenerator.create(URL, USERNAME, PASSWORD)
.globalConfig(builder -> {
builder.author("lvzb31988") // 设置作者
.enableSwagger() // 开启 swagger 模式
.commentDate("yyyy-MM-dd")
.outputDir(System.getProperty("user.dir") + "/src/main/java") // 指定输出目录
// .outputDir("D:\\IdeaProjects\\java11\\demo\\mybatis-plus-demo/src/main/java") // 指定输出目录
// .outputDir("D:\\temp") // 指定输出目录
.fileOverride(); // 覆盖已生成文件
})
.packageConfig(builder -> {
builder.parent(PACKAGE_PATH) // 设置父包名
.moduleName("lvzb") // 设置父包模块名
.entity("entity")
.service("service")
.serviceImpl("service.impl")
.mapper("mapper")
.xml("mapper.xml")
.controller("controller")
.other("other")
// .pathInfo(Collections.singletonMap(OutputFile.mapperXml, "D:\\IdeaProjects\\java11\\demo\\mybatis-plus-demo/src/main/resources/mapper")); // 设置mapperXml生成路径
.pathInfo(Collections.singletonMap(OutputFile.mapperXml, System.getProperty("user.dir") + "/src/main/resources/mapper")); // 设置mapperXml生成路径
})
.strategyConfig(builder -> {
builder.addInclude(TABLES) // 设置需要生成的表名
.addTablePrefix("t_", "c_") // 设置过滤表前缀
.serviceBuilder() // 开启service文件配置
.formatServiceFileName("%sService") // service文件格式化
.formatServiceImplFileName("%sServiceImpl") // impl文件名格式化
.entityBuilder() // 开启entity文件格式化
.enableLombok() // 开启Lombok注解
.enableTableFieldAnnotation() // entity上加table注解
.controllerBuilder() // 开启controller文件配置
.formatFileName("%sController") // controller层文件名格式化
.enableRestStyle() // 使用@RestController注解
.mapperBuilder() // 开启mapper层配置
.enableBaseResultMap()
.superClass(BaseMapper.class) // mapper层继承自父类BaseMapper
.formatMapperFileName("%sMapper") //mapper层的文件名称
.enableMapperAnnotation() // 开启@mapper注解
.formatXmlFileName("%sMapper") // xml配置文件格式化
;
})
.templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
.execute();
}
}