MP代码生成器工具类
说明: 适用版本:mybatis-plus-generator 3.5.1 及其以上版本,对历史版本不兼容
示例使用: mybatis-plus:3.5.1,freemarker:2.3.31,建议使用freemarker模板,freemarker可以配置DTO/VO,更多详情参考MP官网
pom
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.1</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.5.1</version>
</dependency>
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.31</version>
</dependency>
代码
package com.hwx.boot_test.utlis;
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.config.rules.NamingStrategy;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import com.baomidou.mybatisplus.generator.fill.Column;
import java.util.Collections;
/**
* @Author ihtwx
* @ClassName MpGeneratorUtils
* @CreateTime 2023-06-16 13:52
* @Version 1.0
* @Description:
*/
public class MpGeneratorUtils {
/**
* 数据库url
*/
private final static String URL = "jdbc:mysql://192.168.202.14:8306/dsp?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai";
/**
* 用户名
*/
private final static String USERNAME = "root";
/**
* 密码
*/
private final static String PASSWORD = "X2I^KH!v";
/**
* 项目地址
*/
private final static String DIR_PATH = System.getProperty("user.dir");
public static void main(String[] args) {
FastAutoGenerator.create(URL, USERNAME, PASSWORD)
.globalConfig(builder -> {
builder.author("ithwx") //设置作者
//.enableSwagger()
.dateType(DateType.ONLY_DATE)
.outputDir(DIR_PATH + "/src/main/java")
.disableOpenDir() //静止打开输出目录
.build();
})
.packageConfig(builder -> {
builder.parent("com.hwx.boot_test") //设置父包名
.entity("entity.po")
.pathInfo(Collections.singletonMap(OutputFile.mapperXml, DIR_PATH + "/src/main/resources/mapper/"))
.build();
})
.strategyConfig(builder -> {
builder.addInclude("dsp_rasp_dependency_data") //表用","分隔开
//.addTablePrefix("ems_")
.entityBuilder() //entity
.versionColumnName("version")//乐观锁
.idType(IdType.AUTO) //主键策略
.addTableFills(new Column("created_time",FieldFill.INSERT))
.addTableFills(new Column("updated_time",FieldFill.INSERT_UPDATE))
.logicDeleteColumnName("is_deleted") //逻辑删除
.enableLombok()
.naming(NamingStrategy.underline_to_camel)
.columnNaming(NamingStrategy.underline_to_camel)
.enableTableFieldAnnotation() //实体注解
// .controllerBuilder()
// .controllerBuilder()
// .superClass(BaseController.class) //设置父类
// .enableHyphenStyle()
// .enableRestStyle() //开启生成@RestController 控制器
// .formatFileName("%sController")
//
.serviceBuilder() //service
.formatServiceFileName("%sService")
.formatServiceImplFileName("%sServiceImpl")
.mapperBuilder() //mapper
.formatMapperFileName("%sMapper")
.formatXmlFileName("%sMapper")
.enableMapperAnnotation()
.build();
})
.templateEngine(new FreemarkerTemplateEngine())
.templateConfig(builder-> builder.controller(""))
.execute();
}
}