问题:手动创建controller、service、impl、mapper、xml文件繁琐且耗时
解决:generator代码生成器根据表名自动生成各级文件
1、pom依赖
<!-- mybatis-plus代码生成器 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.5.2</version>
</dependency>
<!-- mybatis-plus代码生成器需要 freemarker -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
2、generator生成器Util
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import java.util.HashMap;
/**
* @author liujianming
* @version 1.0
* @describe
* @date 2022/9/20 17:21
*/
@SuppressWarnings("all")
public class GeneratorUtils {
public static void main(String[] args) {
// 数据库连接
FastAutoGenerator.create("jdbc:mysql://localhost:3306/liujianming", "root", "123456")
.globalConfig(builder -> {
builder.author("liujianming") // 设置作者
.enableSwagger() // 开启 swagger 模式
.fileOverride() // 覆盖已生成文件
.outputDir("D://work//code//px//px-springboot//src//main//java//"); // 指定输出目录
})
.packageConfig(builder -> {
builder.parent("com.liujianming.springboot") // 设置父包名
// 设置文件的包名
.entity("domain.po")
.mapper("dao")
.service("service")
.serviceImpl("service.impl")
.controller("controller")
.other("other")
// 设置文件生成路径
.pathInfo(new HashMap<OutputFile, String>() {
{
put(OutputFile.xml,
"D://work//code//px//px-springboot//src//main//resources//mybatis//mapper");
put(OutputFile.entity,
"D://work//code//px//px-springboot//src//main//java//com//liujianming//springboot//domain//po");
put(OutputFile.controller,
"D://work//code//px//px-springboot//src//main//java//com//liujianming//springboot//controller");
put(OutputFile.service,
"D://work//code//px//px-springboot//src//main//java//com//liujianming//springboot//service");
put(OutputFile.serviceImpl,
"D://work//code//px//px-springboot//src//main//java//com//liujianming//springboot//service//impl");
put(OutputFile.mapper,
"D://work//code//px//px-springboot//src//main//java//com//liujianming//springboot//dao");
}
});
})
.strategyConfig(builder -> {
builder.addInclude("article") // 设置需要生成的表名
.addTablePrefix("", "") // 设置过滤表前缀
// controller
.controllerBuilder()
.enableRestStyle()
// entity
.entityBuilder()
.enableLombok();
})
.templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
.execute();
}
}