适用版本:mybatis-plus-generator 3.5.1 及其以上版本,对历史版本不兼容
旧版代码生成器参照官方文档
MyBatis-PlusMyBatis-Plus 官方文档https://baomidou.com/代码段
package cn.alan.Generator;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
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.Collections;
public class GeneratorApplicationTests {
private static final String projectPath = System.getProperty("user.dir");
public static void main(String[] args) {
FastAutoGenerator.create("jdbc:mysql://localhost:3306/mybatisplus?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true", "root", "123456789")
.globalConfig(builder -> {
builder
.fileOverride() //覆盖已生成文件
.disableOpenDir() //禁止(在文件夹中)打开输出目录
.enableSwagger() //开启swagger模式(实体类中的说明)
.outputDir(projectPath + "/src/main/java") //输出目录
.author("alan") //作者
.dateType(DateType.TIME_PACK); //日期类型
})
.packageConfig(builder -> {
builder
.parent("cn.alan.Generator") //父包名
.moduleName("") //父包模块名 默认为空
.entity("POJO") //实体类包名
.service("Service") //Service层包名
.serviceImpl("Service.Impl") //Service层实现类包名
.mapper("Mapper") //Mapper层(DAO层)包名
.xml("Mapper.XML") //xml文件包名
.controller("Controller") //Controller层包名
.other("other")
//设置自动生成文件的路径(此处自定义了xml文件的生成目录 上方.xml()方法将失效)
.pathInfo(Collections.singletonMap(OutputFile.mapperXml,projectPath + "/src/main/resources/mappers"))
.build();
})
.strategyConfig(builder -> {
builder
.addInclude("user") //映射的表名
//禁用SQL过滤
//关闭之后likeTable与notLikeTable将失效 include和exclude将使用内存过滤
//.disableSqlFilter()
.entityBuilder() //实体类设置
.enableLombok() //开启lombok
.enableChainModel() //开启链式编程
.idType(IdType.AUTO) //主键id生成策略
.addTableFills(new Column("create_time", FieldFill.INSERT)) //自动填充(依据数据库字段名)
.addTableFills(new Column("update_time", FieldFill.INSERT_UPDATE)) //自动填充(依据数据库字段名)
.logicDeleteColumnName("deleted") //逻辑删除(依据数据库字段名)
.versionColumnName("version") //乐观锁(依据数据库字段名)
.controllerBuilder() //Controller层设置
.enableHyphenStyle() //开启(url)驼峰转下划线
.enableRestStyle() //开启生成@RestController注解
.serviceBuilder() //Service层设置
.formatServiceFileName("%sService") //Service接口命名规则(除去"I"前缀)
.mapperBuilder() //Mapper层(DAO层)设置
.enableMapperAnnotation(); //开启生成@Mapper注解
})
.templateEngine(new FreemarkerTemplateEngine()) //使用freemarker模板引擎
.execute(); //执行
}
}