mybatis-flex的生成器十分强大,且比mybatis-plus多了很多的功能,也支持连表查询,要强大的多,作者人也很好,也很好沟通(说的就是你,mybatis-plus的作者)。
下面是一个我常用的代码生成器配置,里面加入一些我们内部约定的配置,大家可以修改一下进行使用。
public class MybatisFlexCodeGen {
public static void main(String[] args) {
//配置数据源
HikariDataSource dataSource = new HikariDataSource();
dataSource.setJdbcUrl("jdbc:mysql://xxx:3306/xxx?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true&useInformationSchema=true");
dataSource.setUsername("xxx");
dataSource.setPassword("xxx");
//创建配置内容,两种风格都可以。
GlobalConfig globalConfig = createGlobalConfigUseStyle1();
//通过 datasource 和 globalConfig 创建代码生成器
Generator generator = new Generator(dataSource, globalConfig);
//生成代码
generator.generate();
}
public static GlobalConfig createGlobalConfigUseStyle1() {
//创建配置内容
GlobalConfig globalConfig = new GlobalConfig();
//设置根包
globalConfig.setBasePackage("xxx");
//设置表前缀
globalConfig.setTablePrefix("t_");
globalConfig.setEntityGenerateEnable(true);
globalConfig.setEntityOverwriteEnable(true);
globalConfig.setEntityWithLombok(true);
globalConfig.setEntityWithSwagger(true);
globalConfig.setMapperGenerateEnable(true);
globalConfig.setMapperXmlGenerateEnable(true);
globalConfig.setTableDefGenerateEnable(true);
globalConfig.setTableDefOverwriteEnable(true);
globalConfig.setAuthor("xxx");
//设置项目的JDK版本,项目的JDK为14及以上时建议设置该项,小于14则可以不设置
globalConfig.setEntityJdkVersion(17);
globalConfig.getEntityConfig()
.setSwaggerVersion(EntityConfig.SwaggerVersion.DOC)
.setClassSuffix("PO");
ColumnConfig gmtModifiedValue = new ColumnConfig();
gmtModifiedValue.setColumnName("gmt_modified");
gmtModifiedValue.setOnInsertValue("NOW()");
gmtModifiedValue.setOnUpdateValue("NOW()");
ColumnConfig gmtCreatedValue = new ColumnConfig();
gmtCreatedValue.setColumnName("gmt_created");
gmtCreatedValue.setOnInsertValue("NOW()");
ColumnConfig versionValue = new ColumnConfig();
versionValue.setColumnName("version");
versionValue.setVersion(true);
versionValue.setOnInsertValue("0");
ColumnConfig logicalDeleted = new ColumnConfig();
logicalDeleted.setColumnName("is_deleted");
logicalDeleted.setOnInsertValue("0");
logicalDeleted.setLogicDelete(true);
globalConfig.setColumnConfigMap(Map.of(
"gmt_modified", gmtModifiedValue,
"gmt_create", gmtCreatedValue,
"version", versionValue,
"is_deleted", logicalDeleted
));
// 这里不想要BigInteger,直接使用Long类型即可
JdbcTypeMapping.registerMapping(BigInteger.class, Long.class);
return globalConfig;
}
}
这里使用的mysql数据库,生成表,而且约定了entity和TableDef必须为自动生成,且不应该手动修改。
mapper和mapperxml可以进行手动修改。