依赖
<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() {@Overridepublic void initMap() {this.setMap(new HashMap<>());}};List<FileOutConfig> fileOutConfigList = new ArrayList<>();fileOutConfigList.add(new FileOutConfig(XML_TEMPLATE_PATH) {@Overridepublic 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() {@Overridepublic void initMap() {this.setMap(new HashMap<>());}};List<FileOutConfig> fileOutConfigList = new ArrayList<>();fileOutConfigList.add(new FileOutConfig(MAPPER_TEMPLATE_PATH) {@Overridepublic String outputFile(TableInfo tableInfo) {return MAPPER_JAVA_REAL_PATH+ tableInfo.getEntityName() + "Mapper" + StringPool.DOT_JAVA;}});fileOutConfigList.add(new FileOutConfig(SERVICE_TEMPLATE_PATH) {@Overridepublic String outputFile(TableInfo tableInfo) {return SERVICE_REAL_PATH+ "I" + tableInfo.getEntityName() + "Service" + StringPool.DOT_JAVA;}});fileOutConfigList.add(new FileOutConfig(SERVICE_IMPL_TEMPLATE_PATH) {@Overridepublic String outputFile(TableInfo tableInfo) {return SERVICE_IMPL_REAL_PATH+ tableInfo.getEntityName() + "ServiceImpl" + StringPool.DOT_JAVA;}});fileOutConfigList.add(new FileOutConfig(CONTROLLER_TEMPLATE_PATH) {@Overridepublic String outputFile(TableInfo tableInfo) {return CONTROLLER_REAL_PATH+ tableInfo.getEntityName() + "Controller" + StringPool.DOT_JAVA;}});fileOutConfigList.add(new FileOutConfig(ENTITY_TEMPLATE_PATH) {@Overridepublic 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();}
}