mybatis-plus核心配置生成代码
application.yml
spring:
datasource:
url: jdbc:mysql://localhost:3306/mybatis_plus?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC
driver-class-name: com.mysql.cj.jdbc.Driver
username: root
password: root
pom文件
<!-- MyBatis相关依赖 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.1</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.4.1</version>
</dependency>
<!-- mybatis-plus-generator模版依赖 -->
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.28</version>
</dependency>
生成器代码:
package com.no.seckill.generator;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.annotation.IdType;
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 com.baomidou.mybatisplus.generator.engine.VelocityTemplateEngine;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class MyBatisPlusGenerator {
private static final String AUTHOR = "kun";
private static final String PREFIX = "t_";
private static final String MODULE_NAME = "mytest";
private static final String[] TABLES= {"user"};
private static final String JDBC_URL = "jdbc:mysql://localhost:3306/mybatis_plus?useUnicode=true&characterEncoding=UTF-8" +
"&useSSL=false&zeroDateTimeBehavior=convertToNull&serverTimezone=UTC";
private static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
private static final String JDBC_USERNAME = "root";
private static final String JDBC_PASSWORD = "root";
private static final String BASE_PACKAGE = "com.no.seckill";
public static void main(String[] args) {
String projectPath = System.getProperty("user.dir");
AutoGenerator generator = new AutoGenerator();
configDataSource(generator);
configGlobal(generator, projectPath);
configPackage(generator);
configStrategy(generator);
cofnigCustom(generator, projectPath);
configTemplate(generator);
generator.execute();
}
private static void configDataSource(AutoGenerator generator){
DataSourceConfig dataSourceConfig = new DataSourceConfig();
dataSourceConfig.setUrl(JDBC_URL);
dataSourceConfig.setDbType(DbType.MYSQL);
dataSourceConfig.setDriverName(JDBC_DRIVER);
dataSourceConfig.setUsername(JDBC_USERNAME);
dataSourceConfig.setPassword(JDBC_PASSWORD);
generator.setDataSource(dataSourceConfig);
}
private static void configGlobal(AutoGenerator generator, String projectPath) {
GlobalConfig globalConfig = new GlobalConfig();
String fileOutputPatch = projectPath.concat("/src/main/java");
globalConfig.setOutputDir(fileOutputPatch);
globalConfig.setAuthor(AUTHOR);
globalConfig.setOpen(false);
globalConfig.setFileOverride(true);
globalConfig.setActiveRecord(true);
globalConfig.setEnableCache(false);
globalConfig.setBaseResultMap(true);
globalConfig.setBaseColumnList(true);
globalConfig.setIdType(IdType.INPUT);
globalConfig.setMapperName("%sMapper");
globalConfig.setXmlName("%sMapper");
globalConfig.setEntityName("%s");
globalConfig.setServiceName("%sService");
globalConfig.setServiceImplName("%sServiceImpl");
globalConfig.setControllerName("%sController");
globalConfig.setSwagger2(true);
generator.setGlobalConfig(globalConfig);
}
private static void configPackage(AutoGenerator generator) {
PackageConfig packageConfig = new PackageConfig();
packageConfig.setModuleName(MODULE_NAME);
packageConfig.setParent(BASE_PACKAGE);
packageConfig.setController("controller");
packageConfig.setService("service");
packageConfig.setServiceImpl("service.impl");
packageConfig.setEntity("entity");
packageConfig.setMapper("mapper");
packageConfig.setXml("mapper");
generator.setPackageInfo(packageConfig);
}
private static void configStrategy(AutoGenerator generator) {
StrategyConfig strategy = new StrategyConfig();
strategy.setTablePrefix(PREFIX);
strategy.setNaming(NamingStrategy.underline_to_camel);
strategy.setColumnNaming(NamingStrategy.underline_to_camel);
strategy.setInclude(TABLES);
strategy.setControllerMappingHyphenStyle(true);
generator.setTemplateEngine(new FreemarkerTemplateEngine());
strategy.setEntityLombokModel(true);
strategy.setRestControllerStyle(true);
strategy.setEntityBooleanColumnRemoveIsPrefix(true);
generator.setStrategy(strategy);
}
private static void cofnigCustom(AutoGenerator generator, String projectPath) {
InjectionConfig cfg = new InjectionConfig() {
@Override
public void initMap() {
}
};
String templatePath = "/templates/mapper.xml.ftl";
List<FileOutConfig> focList = new ArrayList<>();
focList.add(new FileOutConfig(templatePath) {
@Override
public String outputFile(TableInfo tableInfo) {
return projectPath.concat("/src/main/resources/mapper/").concat(MODULE_NAME).concat("/")
.concat(tableInfo.getEntityName()).concat("Mapper").concat(StringPool.DOT_XML);
}
});
cfg.setFileOutConfigList(focList);
generator.setCfg(cfg);
}
private static void configTemplate(AutoGenerator generator) {
TemplateConfig templateConfig = new TemplateConfig();
templateConfig.setXml(null);
generator.setTemplate(templateConfig);
}
}