MPG工具类代码
package com.demo.utils;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.po.TableFill;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import java.util.Arrays;
import java.util.List;
/**
* MyBatis-Plus 代码自动生成器
*/
public class MPG {
/**
* 文件配置类
*/
private static class CodeGeneratorConfig{
// 全局配置
private static String outputDir = System.getProperty("user.dir") + "/src/main/java"; // 生成文件的输出目录 默认是true
private static boolean fileOverride = false; // 是否覆盖文件
private static boolean open = false; // 是否打开输出目录 默认是 true
private static String author = "youthme.org"; // 开发作者
private static boolean swagger2 = true; // 开启 swagger2 模式
private static DateType dateType = DateType.ONLY_DATE; // 时间类型对应策略
private static IdType idType = IdType.AUTO; // 指定生成的主键的ID类型
// 数据源配置
private static String driverName = "com.mysql.cj.jdbc.Driver"; // 驱动名称
private static String url = "jdbc:mysql://localhost:3306/demo?useSSL=true&useUnicode=true&characterEncoding=UTF8"; // 驱动连接的URL
private static String username = "root"; // 数据库连接用户名
private static String password = "888888"; // 数据库连接密码
private static DbType dbType = DbType.MYSQL; // 数据库类型
// 包配置
private static String moduleName = ""; // 父包模块名
private static String parent = "com.demo"; // 父包名
private static String entity = "entity"; // Entity包名
private static String mapper = "mapper"; // Mapper包名
private static String xml = "mapper.mapping"; // MapperXml包名
private static String service = "service"; // Service包名
private static String controller = "controller"; // Controller包名
// 策略配置
private static NamingStrategy naming = NamingStrategy.underline_to_camel; // 数据库表映射到实体的命名策略
private static NamingStrategy columnNaming = NamingStrategy.underline_to_camel; // 数据库表字段映射到实体的命名策略
private static boolean entityLombokModel = true; // 【实体】是否为lombok模型(默认 false)
private static String logicDeleteFieldName = "deleted"; // 逻辑删除属性名称
private static List<TableFill> tableFills = // 表填充字段
Arrays.asList(
new TableFill("gmt_create", FieldFill.INSERT),
new TableFill("gmt_modified", FieldFill.INSERT_UPDATE)
);
private static String versionFieldName = "version"; // 乐观锁属性名称
private static boolean restControllerStyle = true;
private static boolean controllerMappingHyphenStyle = true; // url 下划线名命
}
/**
* 构造方法私有化
*/
private MPG(){}
/**
* 执行 MyBatis-Plus 的代码生成器
* @param tables 需要创建的数据库的表名
*/
public static void autoGeneratorExecute(String ... tables){
getAutoGenerator(tables).execute();
}
/**
* 获取 MyBatis-Plus 的代码生成器
* @param tables 需要创建的数据库的表名
* @return 返回代码生成器
*/
private static AutoGenerator getAutoGenerator(String ... tables){
return new AutoGenerator()
.setGlobalConfig(globalConfig()) // 设置全局配置
.setDataSource(dataSourceConfig()) // 设置数据源配置
.setPackageInfo(packageConfig()) // 设置包配置
.setStrategy(strategyConfig()); // 设置策略配置
}
/**
* 全局配置
*/
private static GlobalConfig globalConfig(){
// 全局配置对象
return new GlobalConfig()
.setOutputDir(CodeGeneratorConfig.outputDir) // 项目输出目录
.setFileOverride(CodeGeneratorConfig.fileOverride)
.setOpen(CodeGeneratorConfig.open)
.setAuthor(CodeGeneratorConfig.author) // 开发作者
.setSwagger2(CodeGeneratorConfig.swagger2)
.setDateType(CodeGeneratorConfig.dateType)
.setIdType(CodeGeneratorConfig.idType);
}
/**
* 数据源配置
*/
private static DataSourceConfig dataSourceConfig(){
return new DataSourceConfig()
.setDriverName(CodeGeneratorConfig.driverName)
.setUrl(CodeGeneratorConfig.url)
.setUsername(CodeGeneratorConfig.username)
.setPassword(CodeGeneratorConfig.password)
.setDbType(CodeGeneratorConfig.dbType);
}
/**
* 包配置
*/
private static PackageConfig packageConfig(){
return new PackageConfig()
.setModuleName(CodeGeneratorConfig.moduleName)
.setParent(CodeGeneratorConfig.parent)
.setEntity(CodeGeneratorConfig.entity)
.setMapper(CodeGeneratorConfig.mapper)
.setXml(CodeGeneratorConfig.xml)
.setService(CodeGeneratorConfig.service)
.setController(CodeGeneratorConfig.controller);
}
/**
* 策略配置
* @param tables 需要创建的表名
*/
private static StrategyConfig strategyConfig(String ... tables){
return new StrategyConfig()
.setInclude(tables)
.setNaming(CodeGeneratorConfig.naming)
.setColumnNaming(CodeGeneratorConfig.columnNaming)
.setEntityLombokModel(CodeGeneratorConfig.entityLombokModel)
.setLogicDeleteFieldName(CodeGeneratorConfig.logicDeleteFieldName)
.setTableFillList(CodeGeneratorConfig.tableFills)
.setVersionFieldName(CodeGeneratorConfig.versionFieldName)
.setRestControllerStyle(CodeGeneratorConfig.restControllerStyle)
.setControllerMappingHyphenStyle(CodeGeneratorConfig.controllerMappingHyphenStyle);
}
public static void main(String[] args) {
autoGeneratorExecute();
}
}
Maven依赖
<!-- lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.20</version>
<scope>provided</scope>
</dependency>
<!--swagger-->
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-annotations</artifactId>
<version>1.6.3</version>
</dependency>
<!--mybatis-plus核心库-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.2.0</version>
</dependency>
<!--代码生成器依赖-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.3.2</version>
</dependency>
<!-- 添加 MP 模板引擎依赖 -->
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.3</version>
</dependency>
这个工具类使用的是3.3.2版本的代码生成器依赖,目前只能生成相关的包和类以及xml文件不能自动生成sql语句。