MyBatis-Plus自动生成代码
maven依赖
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.5.3.1</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.3.1</version>
</dependency>
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.31</version>
</dependency>
<dependency>
<groupId>com.spring4all</groupId>
<artifactId>swagger-spring-boot-starter</artifactId>
<version>2.0.2.RELEASE</version>
</dependency>
模板
package cn.jt;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.InjectionConfig;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.config.converts.MySqlTypeConvert;
import com.baomidou.mybatisplus.generator.config.querys.MySqlQuery;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import com.baomidou.mybatisplus.generator.fill.Column;
import com.baomidou.mybatisplus.generator.fill.Property;
import com.baomidou.mybatisplus.generator.keywords.MySqlKeyWordsHandler;
import java.util.Collections;
public class Generator {
private static final String JDBC_URL = "jdbc:mysql://localhost:3306/jt_helper?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8&useSSl=true";
private static final String JDBC_USER_NAME = "root";
private static final String JDBC_PASSWORD = "1234";
private static final String PROJECT_PATH = "/jt-helper";
private static final String PACKAGE_NAME = "/cn/jt";
private static final String SERVICE_PROJECT_PATH = "/";
private static final String[] TBL_NAMES = {"jt_helper"};
private static final String TABLE_PREFIX = "jt_";
private static final String ENTITY_PATH = "/entity/";
private static final String MAPPER_PATH = "/mapper/";
private static final String XML_PATH = "/resources/cn/jt/";
private static final String SERVICE_PATH = "/service/";
private static final String SERVICE_IMPL_PATH = "/service/impl/";
private static final String CONTROLLER_PATH = "/controller/";
private static final String MAPPER_OUTPUT_MODULE = "";
private static final String XML_OUTPUT_MODULE = "mapper";
private static final String SERVICE_OUTPUT_MODULE = "";
private static final String CONTROLLER_OUTPUT_MODULE = "";
private static final String ENTITY_TEMPLATE = "templates/entity.java";
private static final String ENTITY_OUTPUT_PATH = ENTITY_PATH + MAPPER_OUTPUT_MODULE;
private static final String XML_TEMPLATE = "templates/mapper.xml";
private static final String XML_OUTPUT_PATH = XML_PATH + XML_OUTPUT_MODULE;
private static final String MAPPER_TEMPLATE = "templates/mapper.java";
private static final String MAPPER_OUTPUT_PATH = MAPPER_PATH + MAPPER_OUTPUT_MODULE;
private static final String SERVICE_TEMPLATE = "templates/service.java";
private static final String SERVICE_OUTPUT_PATH = SERVICE_PATH + SERVICE_OUTPUT_MODULE;
private static final String SERVICE_IMPL_TEMPLATE = "templates/serviceImpl.java";
private static final String SERVICE_IMPL_OUTPUT_PATH = SERVICE_IMPL_PATH + SERVICE_OUTPUT_MODULE;
private static final String CONTROLLER_TEMPLATE = "templates/controller.java";
private static final String CONTROLLER_OUTPUT_PATH = CONTROLLER_PATH + CONTROLLER_OUTPUT_MODULE;
public static void main(String[] args) {
String projectPath = System.getProperty("user.dir");
DataSourceConfig.Builder dataSourceConfigBuilder = new DataSourceConfig.Builder(JDBC_URL, JDBC_USER_NAME,
JDBC_PASSWORD)
.dbQuery(new MySqlQuery())
.typeConvert(new MySqlTypeConvert())
.keyWordsHandler(new MySqlKeyWordsHandler());
FastAutoGenerator fastAutoGenerator = FastAutoGenerator.create(dataSourceConfigBuilder);
fastAutoGenerator.globalConfig(
globalConfigBuilder -> globalConfigBuilder
.fileOverride()
.disableOpenDir()
.outputDir(projectPath + SERVICE_PROJECT_PATH + "/src/main/java")
.author("JunTian")
.commentDate("yyyy-MM-dd HH:mm:ss")
.dateType(DateType.TIME_PACK)
.enableSwagger()
);
fastAutoGenerator.packageConfig(
packageConfigBuilder -> packageConfigBuilder
.parent(PACKAGE_NAME.replace('/', '.').substring(1))
.entity((ENTITY_OUTPUT_PATH).replace('/', '.').substring(1, (ENTITY_OUTPUT_PATH).length() - 1))
.mapper((MAPPER_OUTPUT_PATH).replace('/', '.').substring(1, (MAPPER_OUTPUT_PATH).length() - 1))
.service((SERVICE_OUTPUT_PATH).replace('/', '.').substring(1, (SERVICE_OUTPUT_PATH).length() - 1))
.serviceImpl((SERVICE_IMPL_OUTPUT_PATH).replace('/', '.').substring(1, (SERVICE_IMPL_OUTPUT_PATH).length() - 1))
.controller((CONTROLLER_OUTPUT_PATH).replace('/', '.').substring(1, (CONTROLLER_OUTPUT_PATH).length() - 1))
.xml("mapper")
.pathInfo(Collections.singletonMap(OutputFile.xml, projectPath + SERVICE_PROJECT_PATH + "\\src\\main" + XML_OUTPUT_PATH))
);
fastAutoGenerator.templateConfig(
templateConfigBuilder -> templateConfigBuilder
.entity(ENTITY_TEMPLATE)
.service(SERVICE_TEMPLATE)
.serviceImpl(SERVICE_IMPL_TEMPLATE)
.controller(CONTROLLER_TEMPLATE)
.mapper(MAPPER_TEMPLATE)
.xml(XML_TEMPLATE)
);
InjectionConfig config = new InjectionConfig();
fastAutoGenerator.strategyConfig(
strategyConfigBuilder -> strategyConfigBuilder
.enableCapitalMode()
.enableSkipView()
.disableSqlFilter()
.addInclude(TBL_NAMES)
.addTablePrefix(TABLE_PREFIX)
);
fastAutoGenerator.strategyConfig(
strategyConfigBuilder -> strategyConfigBuilder.entityBuilder()
.enableTableFieldAnnotation()
.naming(NamingStrategy.underline_to_camel)
.columnNaming(NamingStrategy.underline_to_camel)
.idType(IdType.ASSIGN_ID)
.enableLombok()
.logicDeleteColumnName("deleted")
.logicDeletePropertyName("deleted")
.addTableFills(new Column("create_time", FieldFill.INSERT))
.addTableFills(new Property("updateTime", FieldFill.INSERT_UPDATE))
.versionColumnName("version")
.disableSerialVersionUID()
.enableChainModel()
.formatFileName("%s")
);
fastAutoGenerator.strategyConfig(
strategyConfigBuilder -> strategyConfigBuilder.controllerBuilder()
.enableRestStyle()
.enableHyphenStyle()
);
fastAutoGenerator.strategyConfig(
strategyConfigBuilder -> strategyConfigBuilder.serviceBuilder()
.formatServiceFileName("%sService")
.formatServiceImplFileName("%sServiceImpl"));
fastAutoGenerator.strategyConfig(
strategyConfigBuilder -> strategyConfigBuilder.mapperBuilder()
.enableMapperAnnotation()
.formatMapperFileName("%sMapper")
.formatXmlFileName("%sMapper"));
fastAutoGenerator.templateEngine(new FreemarkerTemplateEngine());
fastAutoGenerator.execute();
}
}