记录一下在使用mybatis-plus 3.5.2版本时代码自动生成
引入依赖
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.2</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.5.2</version>
</dependency>
创建代码生成类
CodeGenerator.java
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import com.baomidou.mybatisplus.generator.fill.Column;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class CodeGenerator {
/**
* 项目路径
*/
private static final String PARENT_DIR = System.getProperty("user.dir");
/**
* 基础包路径
*/
private static final String BASE_PACKAGE = "\\src\\main\\java\\com\\dong";
/**
* controller 生成路径
*/
private static final String CONTROLLER_DIR = PARENT_DIR + BASE_PACKAGE + "\\controller";
/**
* service接口生成路径
*/
private static final String SERVICE_DIR = PARENT_DIR + BASE_PACKAGE + "\\service";
/**
* service实现生成路径
*/
private static final String SERVICE_IMPL_DIR = PARENT_DIR + BASE_PACKAGE + "\\service\\impl";
/**
* mapper 接口生成路径
*/
private static final String MAPPER_DIR = PARENT_DIR + BASE_PACKAGE + "\\mapper";
/**
* xml文件生成路径
*/
private static final String MAPPER_XML_DIR = PARENT_DIR + "\\src\\main\\resources\\mapper";
/**
* 实体类生成路径
*/
private static final String ENTITY_DIR = PARENT_DIR + BASE_PACKAGE + "\\entity";
/**
* 数据库URL
*/
private static final String DB_URL = "jdbc:mysql://localhost:3306/test";
/**
* 用户名
*/
private static final String USERNAME = "root";
/**
* 密码
*/
private static final String PASSWORD = "root";
/**
* 代码生成入口
*
* @param args 参数
*/
public static void main(String[] args) {
FastAutoGenerator.create(DB_URL, USERNAME, PASSWORD)
.globalConfig(builder -> {
builder.author("dong")
.dateType(DateType.ONLY_DATE);
})
.packageConfig(builder -> {
// 设置包名和生成路径
builder.parent("com.dong")
.entity("entity")
.mapper("mapper")
.xml("mapper")
.service("service")
.serviceImpl("service.impl")
.controller("controller")
.pathInfo(getPathInfo());
})
.strategyConfig(builder -> {
builder.addInclude(getInclude()) // 设置需要生成的表名
.addTablePrefix("t_", "c_") // 设置过滤表前缀
.controllerBuilder()
.enableRestStyle()
.serviceBuilder()
.formatServiceFileName("%sService")
.formatServiceImplFileName("%sServiceImpl")
.mapperBuilder()
.enableMapperAnnotation()
.enableBaseColumnList()
.enableBaseResultMap()
.entityBuilder()
.addTableFills(new Column("gmt_create", FieldFill.INSERT))
.addTableFills(new Column("gmt_modified", FieldFill.INSERT_UPDATE))
.enableLombok()
;
})
.templateEngine(new FreemarkerTemplateEngine())
.execute();
}
/**
* 获取配置路径信息
*
* @return pathInfo
*/
private static Map<OutputFile, String> getPathInfo() {
Map<OutputFile, String> pathInfo = new HashMap<>();
// controller 的生成位置
pathInfo.put(OutputFile.controller, CONTROLLER_DIR);
// service 的生成位置
pathInfo.put(OutputFile.service, SERVICE_DIR);
// service 实现的生成位置
pathInfo.put(OutputFile.serviceImpl, SERVICE_IMPL_DIR);
// mapper 接口的生成位置
pathInfo.put(OutputFile.mapper, MAPPER_DIR);
// mapper xml 的生成位置
pathInfo.put(OutputFile.xml, MAPPER_XML_DIR);
// 实体类的生成位置
pathInfo.put(OutputFile.entity, ENTITY_DIR);
return pathInfo;
}
/**
* 获取要进行代码生成的表
*
* @return 要进行代码生成的表的集合
*/
private static List<String> getInclude() {
List<String> includes = new ArrayList<>();
includes.add("cn_area");
return includes;
}
}