1.引入依赖
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
//mybatis-plus-generator 3.5.1 及其以上版本,对历史版本不兼容!
<version>最新版本</version>
</dependency>
3.5.1 以下的版本请参考官方文档 代码生成器旧
2.代码
public class MyBatisPlusCodeGenerator {
public static void main(String[] args) {
//模块名
String moduleName = "elink-chain-center-domain";
//作者名
String author = "ZSJ";
//数据库连接配置
String url = "jdbc:mysql://数据库ip:3306/数据库名?useUnicode=true&useSSL=false&characterEncoding=utf8";
//数据库账号密码
String username = "";
String password = "";
//生成实体表名配置
//要生成代码的表名
String[] tables = new String[]{
"produce_progress_flow",
"produce_progress_flow_calc_date",
"produce_progress_flow_node",
"produce_progress_node"
};
System.out.println("===================开始生成代码========================");
run(moduleName, author, url, username, password, tables);
System.out.println("===================代码生成完成========================");
}
public static void run(String moduleName, String author, String url, String username, String password, String... tables) {
FastAutoGenerator.create(url, username, password)
// 全局配置
.globalConfig(builder -> {
builder
// .fileOverride() // 开启覆盖之前生成的文件
.disableOpenDir() // 禁止打开输出目录
.outputDir(System.getProperty("user.dir") + File.separator + moduleName + "\\src\\main\\java") // 指定输出目录
.author(author) // 作者名
// .enableKotlin() //开启 kotlin 模式
.enableSwagger() // 开启 swagger 模式
.dateType(DateType.TIME_PACK) // 时间策略
.commentDate("yyyy-MM-dd HH:mm:ss"); // 注释日期
})
// 包配置
.packageConfig(builder -> {
//修改代码父包名(最后一级)
builder.parent("com.juliet.chain.center.product") // 父包名
.entity("domain.entity") // Entity 包名
.service("service") // Service 包名
.serviceImpl("service.impl") // Service Impl 包名
.mapper("dao") // Mapper 包名
.xml("mapper.xml") // Mapper XML 包名
.controller("controller") // Controller 包名
.other("config") // 自定义文件包名 输出自定义文件时所用到的包名
//修改xml文件路径(最后一级)
.pathInfo(Collections.singletonMap(OutputFile.mapperXml, System.getProperty("user.dir") + File.separator + moduleName + "\\src\\main\\resources\\mapper\\product"));// 指定xml位置
})
// 策略配置
.strategyConfig(builder -> {
builder.addInclude(tables)
// .addTablePrefix("ums_")// 表名前缀,配置后生成的代码不会有此前缀
// entity策略配置
.entityBuilder()
.formatFileName("%sEntity")// 实体类名称后缀
.enableLombok()// 实体类使用lombok,需要自己引入依赖
.enableChainModel()// 开启链式调用模式
.enableTableFieldAnnotation()// 开启生成实体时生成字段注解@TableField
.naming(NamingStrategy.underline_to_camel)// 数据库表映射到实体的命名策略(默认下划线转驼峰命名)
// .idType(IdType.AUTO)// 全局主键类型
//.logicDeleteColumnName("status")//逻辑删除字段,使用delete方法删除数据时会将status设置为1。调用update方法时并不会将该字段放入修改字段中,而是在条件字段中
// controller策略配置
.controllerBuilder()
.formatFileName("%sController")// 控制类名称后缀
.enableRestStyle()// 开启生成@RestController 控制器
// service策略配置
.serviceBuilder()
.formatServiceFileName("I%sService")// 服务层接口名后缀
.formatServiceImplFileName("%sServiceImpl")// 服务层实现类名后缀
// mapper策略配置
.mapperBuilder()
.enableMapperAnnotation()// 开启 @Mapper 注解
.superClass(BaseMapper.class)
.formatMapperFileName("%sDao")// 持久层接口名后缀
.formatXmlFileName("%sDao");// 持久层xml文件后缀
})
.execute();
}
}