这是我参与8月更文挑战的第12天,活动详情查看:8月更文挑战
代码生成器
- MyBatis-Plus 的代码生成器是AutoGenerator 使用代码生成器,可以快速生成 Entity、Mapper、Mapper XML、Service、Controller 等各个模块的代码,不用手动去写,提高了开发的效率
各种配置
代码生成器是AutoGenerator 配置包含:一些基本的配置主要有:
全局配置(GlobalConfig);
数据源配置(DataSourceConfig)通过该配置,指定具体使用哪一个数据库;
策略配置(StrategyConfig)数据库表配置,通过该配置,可指定需要生成哪些表或者排除哪些表;
包名配置(PackageConfig) 通过该配置,指定生成代码的包路径
模板配置(TemplateConfig)模板配置,自定义模板,实现个性化操作
注入配置(InjectionConfig)通过该配置,可注入自定义参数等操作以实现个性化操作
每种配置的常用属性
- GlobalConfig 全局配置 outputDir:生成文件的输出目录(默认是D 盘根目录)
open:是否打开输出目录(默认打开)
author:开发人员(默认null)
GlobalConfig gc = new GlobalConfig();
String projectPath = "D:/ideaWork/test/test-global";
gc.setOutputDir(projectPath + "/src/main/java");
gc.setAuthor("aaa");
gc.setOpen(false);
- DataSourceConfig 数据源配置 url: 驱动连接的URL
driverName: 驱动名称
userName: 用户名
password: 密码
typeConvert: 类型转换(字段类型 转换为自己需要的 java类型)
DataSourceConfig dsc = new DataSourceConfig();
dsc.setUrl("jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false&zeroDateTimeBehavior=CONVERT_TO_NULL&serverTimezone=GMT%2B8");
dsc.setDriverName("com.mysql.cj.jdbc.Driver");
dsc.setUsername("root");
dsc.setPassword("123");
dsc.setTypeConvert(new MySqlTypeConvert() {
@Override
public DbColumnType processTypeConvert(GlobalConfig globalConfig, String fieldType) {
//将数据库中 decimal 转换成 Double
if (fieldType.toLowerCase().contains("decimal")) {
return DbColumnType.DOUBLE;
}
//将数据库中 datetime 转换成 Date
if (fieldType.toLowerCase().contains("timestamp")) {
return DbColumnType.DATE;
}
return (DbColumnType) super.processTypeConvert(globalConfig, fieldType);
}
});
- StrategyConfig 策略配置 naming 数据库表映射到实体的命名策略
tablePrefix 表前缀
columnNaming 数据库表字段映射到实体的命名策略, 未指定按照 naming 执行
entityLombokModel 【实体】是否为lombok模型(默认 false)
restControllerStyle:生成 bu@RestController 控制器
include 需要包含的表名
controllerMappingHyphenStyle 驼峰转连字符
StrategyConfig strategy = new StrategyConfig();
strategy.setNaming(NamingStrategy.underline_to_camel);
strategy.setTablePrefix("t_");
strategy.setColumnNaming(NamingStrategy.underline_to_camel);
strategy.setEntityLombokModel(true);
strategy.setRestControllerStyle(true);
strategy.setInclude("t_test1", "t_test2", "t_test3");
strategy.setControllerMappingHyphenStyle(true);
- PackageConfig 包配置 parent: 父包名。如果为空,将下面子包名必须写全部, 否则就只需写子包名
entity Entity包名
mapper Mapper包名
PackageConfig pc = new PackageConfig();
pc.setParent("com.flscode.resume");
pc.setEntity("entity");
pc.setMapper("dao");
pc.setXml("dao");
由于具体的代码篇幅过长,生成代码和官网相似 但是在官方的基础上加了自己需要的一些东西 可以参考上面具体的每个配置内容
代码执行结果则会自动生成
总结
利用代码生成器快速生成 Entity、Mapper、Mapper XML、Service、Controller等代码,在开发上极大的提高了我们的开发效率 从这些配置上来看 其实最主要的配置则是数据源配置和数据表配置以及全局的配置,则三个配置在本文中没有提到的一些属性去利用官网去了解一下。还有一些实现个性化操作的配置可以通过官网去了解