<dependencies>
<dependency>
<groupId>com.hengtiansoft.business.gdpex.yd</groupId>
<artifactId>common</artifactId>
<version>1.0.0</version>
<exclusions>
<exclusion>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-to-slf4j</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
</exclusion>
<exclusion>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
</exclusion>
<exclusion>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- 代码生成器 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.5.1</version>
</dependency>
<!-- velocity 模板引擎 -->
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.3</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-models</artifactId>
</dependency>
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-annotations</artifactId>
</dependency>
<!-- <dependency>-->
<!-- <groupId>com.hengtiansoft.sc</groupId>-->
<!-- <artifactId>data-support-orm-mybatisplus</artifactId>-->
<!-- </dependency>-->
<!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-boot-starter -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.1.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.26</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
Generator
package com.hengtiansoft.business.gdpex.yd.generate;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import com.baomidou.mybatisplus.generator.fill.Column;
import com.baomidou.mybatisplus.generator.fill.Property;
import java.util.Collections;
/**
* MP代码生成器主类
*
* @author Chenyang Fan
* @since 1.0.0
*/
public class Generator {
// 项目地址
private static String projectName = "/framework/myTest";
private static String packageName = "com.hengtiansoft.business.gdpex";
/**
* 过滤表前缀
*/
private static String[] tablePrefix = new String[]{
};
/**
* 过滤表后缀
*/
private static String[] tableSuffix = new String[]{
};
/**
* 过滤字段前缀
*/
private static String[] fieldPrefix = new String[]{
};
/**
* 过滤字段后缀
*/
private static String[] fieldSuffix = new String[]{
};
// 设置要映射的表 (如需使用,需要打开strategyConfig中的addInclude(tableName)的注释)
private static String[] tableName = new String[]{
"user"
};
public static void main(String[] args) {
String url = "jdbc:mysql://127.0.0.1:3306/ht-oa?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai&verifyServerCertificate=false&zeroDateTimeBehavior=CONVERT_TO_NULL&nullCatalogMeansCurrent=true&tinyInt1isBit=false&useAffectedRows=true";
String username = "root";
String password = "123456";
DataSourceConfig dataSourceConfig = new DataSourceConfig.Builder(url, username, password)
.typeConvert(new MySqlTypeConvertCustom())
.build();
/*
全局配置(GlobalConfig)
*/
GlobalConfig globalConfig = new GlobalConfig.Builder()
.fileOverride() //覆盖已生成文件
.disableOpenDir() //禁止打开输出目录
.outputDir(System.getProperty("user.dir") + projectName + "/src/main/java") //指定输出目录
.author("sc") //作者名
.enableSwagger() //开启 swagger 模式
.dateType(DateType.TIME_PACK) //时间策略
.commentDate("yyyy-MM-dd") //注释日期
.build();
/*
包配置(PackageConfig)
*/
PackageConfig packageConfig = new PackageConfig.Builder()
.parent(packageName) //父包名
.moduleName("yd") //父包模块名
.entity("entity.po") //Entity 包名
.service("service") //Service 包名
.serviceImpl("service.impl") //Service Impl 包名
.mapper("mapper") //Mapper 包名
.xml("mapper.xml") //Mapper XML 包名
.controller("controller") //Controller 包名
.other("other") //自定义文件包名
.pathInfo(Collections.singletonMap(OutputFile.mapperXml, System.getProperty("user.dir") + projectName + "/src/main/resources/mapper")) //路径配置信息
.build();
/*
模板配置(TemplateConfig)
*/
TemplateConfig templateConfig = new TemplateConfig.Builder()
.disable(TemplateType.ENTITY)
.entity("/templates/entity.java")
.service("/templates/service.java")
.serviceImpl("/templates/serviceImpl.java")
.mapper("/templates/mapper.java")
.mapperXml("/templates/mapper.xml")
.controller("/templates/controller.java")
.build();
/*
注入配置(InjectionConfig)
*/
InjectionConfig injectionConfig = new InjectionConfig.Builder()
.beforeOutputFile((tableInfo, objectMap) -> {
System.out.println("tableInfo: " + tableInfo.getEntityName() + " objectMap: " + objectMap.size());
})
.customMap(Collections.singletonMap("test", "baomidou"))
.customFile(Collections.singletonMap("test.txt", "/templates/test.vm"))
.build();
/*
策略配置(StrategyConfig)
*/
StrategyConfig strategyConfig = new StrategyConfig.Builder()
.enableCapitalMode() //开启大写命名
// .enableSkipView() //开启跳过视图
.disableSqlFilter() //禁用 sql 过滤
// .likeTable(new LikeTable("USER"))
.addInclude(tableName) // 设置要映射的表
.addTablePrefix(tablePrefix) //增加过滤表前缀
.addTableSuffix(tableSuffix) //增加过滤表后缀
.addFieldPrefix(fieldPrefix) //增加过滤字段前缀
.addFieldSuffix(fieldSuffix) //增加过滤字段后缀
.build();
/* ----------------------------实体策略配置---------------------------- */
strategyConfig = strategyConfig
.entityBuilder()
.disableSerialVersionUID()
// .enableChainModel()
.enableLombok()
// .enableRemoveIsPrefix()
.enableTableFieldAnnotation()
// .enableActiveRecord()
.versionColumnName("version").versionPropertyName("version")
.logicDeleteColumnName("deleted").logicDeletePropertyName("deleteFlag")
.naming(NamingStrategy.underline_to_camel)
.columnNaming(NamingStrategy.underline_to_camel)
.addSuperEntityColumns("id", "created_by", "created_time", "updated_by", "updated_time")
.addIgnoreColumns("age")
.addTableFills(new Column("create_time", FieldFill.INSERT)) // 插入时改变的时间纪录, created为表的字段名
.addTableFills(new Property("update_Time", FieldFill.INSERT_UPDATE)) // 最后一次更新时updated表字段的时间记录
.idType(IdType.AUTO)
.formatFileName("%sEntity")
.build();
/* ----------------------------Controller 策略配置---------------------------- */
strategyConfig = strategyConfig
.controllerBuilder()
.enableRestStyle()
.formatFileName("%sController")
.build();
/* ----------------------------Mapper 策略配置---------------------------- */
strategyConfig = strategyConfig
.mapperBuilder()
.enableMapperAnnotation()
.enableBaseResultMap()
.enableBaseColumnList()
.formatMapperFileName("%sDao")
.formatXmlFileName("%sMapper")
// .formatXmlFileName("%sXml")
.build();
/* ----------------------------service 策略配置---------------------------- */
strategyConfig = strategyConfig
.serviceBuilder()
.formatServiceFileName("%sService")
.formatServiceImplFileName("%sServiceImp")
.build();
AutoGenerator autoGenerator = new AutoGenerator(dataSourceConfig);
autoGenerator.global(globalConfig);
autoGenerator.packageInfo(packageConfig);
autoGenerator.strategy(strategyConfig);
autoGenerator.execute();
}
}
MySqlTypeConvertCustom
package com.hengtiansoft.business.gdpex.yd.generate;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.ITypeConvert;
import com.baomidou.mybatisplus.generator.config.converts.MySqlTypeConvert;
import com.baomidou.mybatisplus.generator.config.rules.DbColumnType;
import com.baomidou.mybatisplus.generator.config.rules.IColumnType;
/**
* Description: tinyint(1)映射成integer
*
* @author wenlongchen
* @since 2022/6/13
*/
public class MySqlTypeConvertCustom extends MySqlTypeConvert implements ITypeConvert {
@Override
public IColumnType processTypeConvert(GlobalConfig globalConfig, String fieldType) {
String t = fieldType.toLowerCase();
if (t.contains("tinyint(1)")) {
return DbColumnType.INTEGER;
}
return super.processTypeConvert(globalConfig, fieldType);
}
}