依赖
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.4.1</version>
</dependency>
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.31</version>
</dependency>
代码
package com.admin.util;
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.DateType;
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;
public class Generator {
private final static AutoGenerator autoGenerator = new AutoGenerator();
private final static String GLOBAL_PROJECT_PATH = System.getProperty("user.dir");
private final static String GLOBAL_AUTHOR = "huangjun";
private final static String JDBC_URL = "jdbc:mysql://localhost:3306/mywork?useUnicode=true&useSSL=false&serverTimezone=Asia/Shanghai";
private final static String JDBC_USERNAME = "root";
private final static String JDBC_PASSWORD = "root";
private final static String JDBC_DRIVERNAME = "com.mysql.cj.jdbc.Driver";
private final static DbType JDBC_DBTYPE = DbType.MYSQL;
private final static String PACKAGE_PARENT = "com.admin";
private final static String PACKAGE_CONTROLLER = "controller";
private final static String PACKAGE_ENTITY = "entity";
private final static String PACKAGE_MAPPER = "mapper";
private final static String PACKAGE_SERVICE = "service";
private final static String PACKAGE_SERVICE_IMPL = "service.impl";
private final static String XML_TEMPLATE_PATH = "/templates/mapper.xml.ftl";
private final static String MAPPER_TEMPLATE_PATH = "/templates/mapper.java.ftl";
private final static String SERVICE_TEMPLATE_PATH = "/templates/service.java.ftl";
private final static String SERVICE_IMPL_TEMPLATE_PATH = "/templates/serviceImpl.java.ftl";
private final static String ENTITY_TEMPLATE_PATH = "/templates/entity.java.ftl";
private final static String CONTROLLER_TEMPLATE_PATH = "/templates/controller.java.ftl";
private final static String PARENT_REAL_PATH = GLOBAL_PROJECT_PATH + "/src/main/java/com/admin";
private final static String CONTROLLER_REAL_PATH = PARENT_REAL_PATH + "/controller/";
private final static String SERVICE_REAL_PATH = PARENT_REAL_PATH + "/service/";
private final static String SERVICE_IMPL_REAL_PATH = PARENT_REAL_PATH + "/service/impl/";
private final static String MAPPER_XML_REAL_PATH = GLOBAL_PROJECT_PATH + "/src/main/resources/mapper/";
private final static String MAPPER_JAVA_REAL_PATH = PARENT_REAL_PATH + "/mapper/";
private final static String ENTITY_REAL_PATH = PARENT_REAL_PATH + "/entity/";
private final static String STRATEGY_TABLE_PREFIX = "";
private static void dataSourceConfig(){
DataSourceConfig dataSourceConfig = new DataSourceConfig().setUrl(JDBC_URL)
.setUsername(JDBC_USERNAME)
.setPassword(JDBC_PASSWORD)
.setDriverName(JDBC_DRIVERNAME)
.setDbType(JDBC_DBTYPE);
autoGenerator.setDataSource(dataSourceConfig);
}
private static void globalConfig(){
GlobalConfig globalConfig = new GlobalConfig();
globalConfig.setOutputDir(GLOBAL_PROJECT_PATH + "/src/main/java")
.setAuthor(GLOBAL_AUTHOR)
.setOpen(false)
.setFileOverride(true)
.setIdType(IdType.AUTO)
.setBaseResultMap(true)
.setDateType(DateType.ONLY_DATE)
.setServiceName("I%sService")
.setBaseColumnList(true);
autoGenerator.setGlobalConfig(globalConfig);
}
private static void packageConfig(){
PackageConfig packageConfig = new PackageConfig();
packageConfig.setParent(PACKAGE_PARENT)
.setController(PACKAGE_CONTROLLER)
.setEntity(PACKAGE_ENTITY)
.setMapper(PACKAGE_MAPPER)
.setService(PACKAGE_SERVICE)
.setServiceImpl(PACKAGE_SERVICE_IMPL);
autoGenerator.setPackageInfo(packageConfig);
}
private static void strategyConfig(){
StrategyConfig strategyConfig = new StrategyConfig();
strategyConfig
.setInclude(INCLUDE_TABLES.split(","))
.setCapitalMode(true)
.setNaming(NamingStrategy.underline_to_camel)
.setColumnNaming(NamingStrategy.underline_to_camel)
.setEntityLombokModel(true)
.setRestControllerStyle(true)
.setTablePrefix(STRATEGY_TABLE_PREFIX)
.setControllerMappingHyphenStyle(true);
autoGenerator.setStrategy(strategyConfig);
autoGenerator.setTemplateEngine(new FreemarkerTemplateEngine());
}
private static void injectionConfig(){
InjectionConfig injectionConfig = new InjectionConfig() {
@Override
public void initMap() {
this.setMap(new HashMap<>());
}
};
List<FileOutConfig> fileOutConfigList = new ArrayList<>();
fileOutConfigList.add(new FileOutConfig(XML_TEMPLATE_PATH) {
@Override
public String outputFile(TableInfo tableInfo) {
return MAPPER_XML_REAL_PATH +
tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML;
}
});
injectionConfig.setFileOutConfigList(fileOutConfigList);
autoGenerator.setCfg(injectionConfig);
}
private static void initInjectionConfigForJava(){
InjectionConfig injectionConfig = new InjectionConfig() {
@Override
public void initMap() {
this.setMap(new HashMap<>());
}
};
List<FileOutConfig> fileOutConfigList = new ArrayList<>();
fileOutConfigList.add(new FileOutConfig(MAPPER_TEMPLATE_PATH) {
@Override
public String outputFile(TableInfo tableInfo) {
return MAPPER_JAVA_REAL_PATH
+ tableInfo.getEntityName() + "Mapper" + StringPool.DOT_JAVA;
}
});
fileOutConfigList.add(new FileOutConfig(SERVICE_TEMPLATE_PATH) {
@Override
public String outputFile(TableInfo tableInfo) {
return SERVICE_REAL_PATH
+ "I" + tableInfo.getEntityName() + "Service" + StringPool.DOT_JAVA;
}
});
fileOutConfigList.add(new FileOutConfig(SERVICE_IMPL_TEMPLATE_PATH) {
@Override
public String outputFile(TableInfo tableInfo) {
return SERVICE_IMPL_REAL_PATH
+ tableInfo.getEntityName() + "ServiceImpl" + StringPool.DOT_JAVA;
}
});
fileOutConfigList.add(new FileOutConfig(CONTROLLER_TEMPLATE_PATH) {
@Override
public String outputFile(TableInfo tableInfo) {
return CONTROLLER_REAL_PATH
+ tableInfo.getEntityName() + "Controller" + StringPool.DOT_JAVA;
}
});
fileOutConfigList.add(new FileOutConfig(ENTITY_TEMPLATE_PATH) {
@Override
public String outputFile(TableInfo tableInfo) {
return ENTITY_REAL_PATH
+ tableInfo.getEntityName() + StringPool.DOT_JAVA;
}
});
injectionConfig.setFileOutConfigList(fileOutConfigList);
autoGenerator.setCfg(injectionConfig);
}
private static void templateConfig() {
TemplateConfig templateConfig = new TemplateConfig();
templateConfig.setXml(null);
autoGenerator.setTemplate(templateConfig);
}
static {
globalConfig();
dataSourceConfig();
packageConfig();
strategyConfig();
injectionConfig();
templateConfig();
}
private final static String INCLUDE_TABLES ="student";
public static void main(String[] args) {
autoGenerator.execute();
}
}