1 MybatisPlus3.3.2代码自动生成
参考官网:https://mybatis.plus/guide/generator.html
1.1 pom依赖
<!-- mybatis-plus依赖 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.3.2</version>
</dependency>
<!-- mysql驱动包 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- 测试包 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- 代码生成器 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.3.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.30</version>
<scope>test</scope>
</dependency>
1.2 代码生成类
import com.baomidou.mybatisplus.core.toolkit.StringPool;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.InjectionConfig;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.po.TableInfo;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class CodeGenerator {
// 固定
private static final String projectPath = System.getProperty("user.dir");
private static final String outPutDir = projectPath + "/src/main/java";
// 自定义
private static final String author = "hzp";
private static final String packageName = "test";
private static final String moduleName = "door";
private static final String[] tableName = ("sys_business,sys_dept,sys_permission,sys_role,sys_role_permission,sys_user,sys_user_business,sys_user_dept,sys_user_role").split(",");
private static final String tablePrefix = "sys";
public static void main(String[] args) {
// 代码生成器
AutoGenerator mpg = new AutoGenerator();
// 设置全局配置
mpg.setGlobalConfig(getGlobalConfig());
// 设置数据源配置
mpg.setDataSource(getDataSourceConfig());
// 包配置
PackageConfig pc = getPackageConfig();
mpg.setPackageInfo(pc);
// 自定义配置
mpg.setCfg(getInjectionConfig());
// 配置模板
TemplateConfig templateConfig = new TemplateConfig();
templateConfig.setXml(null);
mpg.setTemplate(templateConfig);
// 策略配置
mpg.setStrategy(getStrategyConfig());
mpg.setTemplateEngine(new FreemarkerTemplateEngine());
mpg.execute();
}
private static GlobalConfig getGlobalConfig() {
// 全局配置
GlobalConfig gc = new GlobalConfig();
gc.setOutputDir(outPutDir);
gc.setAuthor(author);
gc.setOpen(false);
gc.setEntityName("%sEntity");
gc.setMapperName("%sDao");
gc.setServiceName("%sService");
// 是否覆盖文件,默认false不覆盖
gc.setFileOverride(true);
// XML ResultMap
gc.setBaseResultMap(true);
// XML columList
gc.setBaseColumnList(true);
// gc.setSwagger2(true); 实体属性 Swagger2 注解
return gc;
}
private static DataSourceConfig getDataSourceConfig() {
// 数据源配置
DataSourceConfig dsc = new DataSourceConfig();
dsc.setUrl("jdbc:mysql://localhost:3306/shiroplay?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&useSSL=false");
// dsc.setSchemaName("public");
// String driverName = "com.mysql.jdbc.Driver";
String driverName = "com.mysql.cj.jdbc.Driver";
dsc.setDriverName(driverName);
dsc.setUsername("root");
dsc.setPassword("root");
return dsc;
}
private static PackageConfig getPackageConfig() {
// 包配置
PackageConfig pc = new PackageConfig();
// 包名称
pc.setParent(packageName);
// 模块名称
pc.setModuleName(moduleName);
return pc;
}
private static InjectionConfig getInjectionConfig() {
// 自定义配置
InjectionConfig cfg = new InjectionConfig() {
@Override
public void initMap() {
}
};
// 如果模板引擎是 freemarker
String templatePath = "/templates/mapper.xml.ftl";
List<FileOutConfig> focList = new ArrayList<>();
focList.add(new FileOutConfig(templatePath) {
@Override
public String outputFile(TableInfo tableInfo) {
return projectPath + "/src/main/resources/mapper/" + tableInfo.getEntityName().replace("Entity", "")
+ "Mapper" + StringPool.DOT_XML;
}
});
cfg.setFileOutConfigList(focList);
return cfg;
}
private static StrategyConfig getStrategyConfig() {
// 策略配置
StrategyConfig strategy = new StrategyConfig();
strategy.setNaming(NamingStrategy.underline_to_camel);
strategy.setColumnNaming(NamingStrategy.underline_to_camel);
// strategy.setSuperEntityClass("你自己的父类实体,没有就不用设置!");
strategy.setEntityLombokModel(true);
strategy.setRestControllerStyle(true);
// 公共父类
// strategy.setSuperControllerClass("你自己的父类控制器,没有就不用设置!");
// 写于父类中的公共字段
// strategy.setSuperEntityColumns("id");
// strategy.setInclude(scanner("表名,多个英文逗号分割").split(","));
strategy.setInclude(tableName);
strategy.setControllerMappingHyphenStyle(true);
strategy.setTablePrefix(tablePrefix + "_");
return strategy;
}
}