【福利,本文评论用户将有机会获得掘金新版徽章 1 枚】
前言
XDM大家好,金秋时节,又与大家见面了。在8月份进行了满勤日更,已经“肝胆欲裂”了。8月底出来新的活动:一次免费申请掘金周边礼物的机会。抱着试试看的想法,提交了申请,争取为广大掘友申请福利。作者有幸获得了首批试行阶段的名额,感谢长期以来各位读者对小阿杰的认可,也感谢掘金提供本次机会,使作者与读者更好的互动。
活动链接如下:请查收|你有一次免费申请掘金周边礼物的机会
收到的系统站内信:
官网公布的名单。在收到申请周边活动成功之后的,也进行了充分的技术选题,在能输出技术知识的同时,又能充分调动读者的积极互动性。经过慎重思考之后,选择了写代码生成以及大家对代码生成器在项目中使用的一些思考,针对这些问题展开讨论。
好了开始正题,本次为大家介绍的代码生成器是MyBatis-Plus中的AutoGenerator。
初识 AutoGenerator。
相信使用过的代码生成器小伙伴对此都感觉很爽,刷刷刷的基础代码就已经开发完成了。在Java开始过程中有一款经常使用的代码生成器AutoGenerator。AutoGenerator是MyBatis-Plus的代码生成器,通过AutoGenerator可以快速生成 Entity、Mapper、Mapper XML、Service、Controller等各个模块的代码,极大的提升了开发效率,减少了基础代码重复编写的工作。
快速开始
添加依赖
MyBatis-Plus 从 3.0.3
之后移除了代码生成器与模板引擎的默认依赖,需要手动添加相关依赖:本文针对Java开发者,使用Maven引入依赖包信息。
1 | js复制代码 |
基本配置
在使用AutoGenerator代码生成器中,需要对相关参数进行配置,以便生成相关代码。主要配置包含:数据源配置、数据库表配置、包名配置、模板配置、全局策略配置、注入配置等。下面具体介绍各个配置的参数及其作用。
数据源配置
数据源配置DataSourceConfig,其默认值:null,通过该配置,指定需要生成代码的具体数据库。
参数类型 | 描述 | 备注 |
---|---|---|
dbQuery | 数据库信息查询类 | 默认由 dbType 类型决定选择对应数据库内置实现 |
dbType | 数据库类型 | 该类内置了常用的数据库类型【必须】 |
schemaName | 数据库 schema name | 例如 PostgreSQL 可指定为 public |
typeConvert | 类型转换 | 默认由 dbType 类型决定选择对应数据库内置实现 |
url | 驱动连接的URL | 数据库的链接地址 |
driverName | 驱动名称 | 例如:com.mysql.cj.jdbc.Driver |
username | 数据库连接用户名 | 数据库连接用户名 |
password | 数据库连接密码 | 数据库连接密码 |
数据库表配置
数据库表配置StrategyConfig,其默认值:null,通过该配置,可指定需要生成哪些表或者排除哪些表。
参数类型 | 描述 | 备注与默认值 |
---|---|---|
isCapitalMode | 是否大写命名 | false |
skipView | 是否跳过视图 | false |
naming | 数据库表映射到实体的命名策略 | |
columnNaming | 数据库表字段映射到实体的命名策略, 未指定按照 naming 执行 | null |
tablePrefix | 表前缀 | |
fieldPrefix | 字段前缀 | |
superEntityClass | 自定义继承的Entity类全称,带包名 | |
superEntityColumns | 自定义基础的Entity类,公共字段 | |
superMapperClass | 自定义继承的Mapper类全称,带包名 | String SUPER_MAPPER_CLASS = “com.baomidou.mybatisplus.core.mapper.BaseMapper”; |
superServiceClass | 自定义继承的Service类全称,带包名 | String SUPER_SERVICE_CLASS = “com.baomidou.mybatisplus.extension.service.IService”; |
superServiceImplClass | 自定义继承的ServiceImpl类全称,带包名 | |
superControllerClass | 自定义继承的Controller类全称,带包名 | |
enableSqlFilter | 默认激活进行sql模糊表名匹配,关闭之后likeTable与notLikeTable将失,include和exclude将使用内存过滤,如果有sql语法兼容性问题的话,请手动设置为false | |
include | 需要包含的表名,当enableSqlFilter为false时,允许正则表达式(与exclude二选一配置 | null |
likeTable | 自3.3.0起,模糊匹配表名(与notLikeTable二选一配置) | likeTable |
exclude | 需要排除的表名,当enableSqlFilter为false时,允许正则表达式 | null |
notLikeTable | 自3.3.0起,模糊排除表名 | null |
entityColumnConstant | 【实体】是否生成字段常量(默认 false) | false |
chainMode | 【实体】是否为构建者模型(默认 false)3.3.2开始 | 原来版本是 entityBuilderModel |
entityLombokModel | 【实体】是否为lombok模型(默认 false) | 3.3.2以下版本默认生成了链式模型,3.3.2以后, |
entityBooleanColumnRemoveIsPrefix | Boolean类型字段是否移除is前缀(默认 false) | false |
restControllerStyle | 生成 @RestController 控制器 | false |
controllerMappingHyphenStyle | 驼峰转连字符 | false |
entityTableFieldAnnotationEnable | 是否生成实体时,生成字段注解 | false |
versionFieldName | 乐观锁属性名称 | |
logicDeleteFieldName | 逻辑删除属性名称 | is_del |
tableFillList | 表填充字段 |
包名配置
包名配置PackageConfig,其默认值:null,通过该配置,指定生成代码的包路径。
参数类型 | 描述 | 默认值 |
---|---|---|
parent | 父包名。如果为空,将下面子包名必须写全部, 否则就只需写子包名 | com.baomidou |
moduleName | 父包模块名 | null |
entity | Entity包名 | entity |
service | Service包名 | service |
serviceImpl | Service Impl包名 | service.impl |
mapper | Mapper | mapper |
xml | Mapper XML包名 | mapper.xml |
controller | Controller包名 | controller |
pathInfo | 路径配置信息 |
模板配置
模板配置TemplateConfig,其默认值:null,可自定义代码生成的模板,实现个性化操作。
参数类型 | 描述 | 备注 |
---|---|---|
entity | Java 实体类模板 | /templates/entity.java |
entityKt | Kotin 实体类模板 | /templates/entity.kt |
service | Service 类模板 | /templates/service.java |
serviceImpl | Service impl 实现类模板 | /templates/serviceImpl.java |
mapper | mapper 模板 | /templates/mapper.java |
xml | mapper xml 模板 | /templates/mapper.xml |
controller | controller 控制器模板 | /templates/controller.java |
全局策略配置
全局策略配置GlobalConfig,其默认值:null。
参数类型 | 描述 | 备注 |
---|---|---|
outputDir | 生成文件的输出目录 | 默认值:D 盘根目录 |
fileOverride | 是否覆盖已有文件 | 默认值:false |
open | 是否打开输出目录 | 默认值:true |
enableCache | 是否在xml中添加二级缓存配置 | 默认值:`false |
author | 开发人员 | 默认值:null |
kotlin | 开启 Kotlin 模式 | 默认值:false |
swagger2 | 开启 swagger2 模式 | 默认值:false |
activeRecord | 开启 ActiveRecord 模式 | 默认值:false |
baseResultMap | 开启 BaseResultMap | 默认值:false |
baseColumnList | 开启 baseColumnList | 默认值:false |
dateType | 时间类型对应策略 | 默认值:TIME_PACK |
entityName | 实体命名方式 | 默认值:null 例如:%sEntity 生成 UserEntity |
mapperName | mapper 命名方式 | 默认值:null 例如:%sDao 生成 UserDao |
xmlName | Mapper xml 命名方式 | 默认值:null 例如:%sDao 生成 UserDao.xml |
serviceName | service 命名方式 | 默认值:null 例如:%sBusiness 生成 UserBusiness |
serviceImplName | service impl 命名方式 | 默认值:null 例如:%sBusinessImpl 生成 UserBusinessImpl |
controllerName | controller 命名方式 | 默认值:null 例如:%sAction 生成 UserAction |
idType | 指定生成的主键的ID类型 | 默认值:null |
注入配置
注入配置InjectionConfig,其默认值:null,通过该配置,可注入自定义参数等操作以实现个性化操作。
参数类型 | 描述 | 备注 |
---|---|---|
map | 自定义返回配置 Map 对象 | 该对象可以传递到模板引擎通过 cfg.xxx 引用 |
fileOutConfigList | 自定义输出文件 | 配置 FileOutConfig 指定模板文件、输出文件达到自定义文件生成目的 |
fileCreate | 自定义判断是否创建文件 | 实现 IFileCreate 接口 |
initMap | 注入自定义 Map 对象(注意需要setMap放进去) |
通过上述介绍的配置信息,MyBatis-Plus 的AutoGenerator代码生成器提供了大量的自定义参数,能够满足绝大部分人的使用需求。下面针对上述配置进行编写代码。其实就是针对DataSourceConfig、StrategyConfig、PackageConfig、TemplateConfig、GlobalConfig、InjectionConfig这些实体类赋值即可。
示例
设置常量
1 | js复制代码 /** |
初始化代码生成器
1 | js复制代码 /** |
数据源配置
1 | js复制代码 /** |
全局配置
1 | js复制代码 /** |
包配置
1 | js复制代码 /** |
策略配置
1 | js复制代码 /** |
抽象的对外接口
1 | js复制代码 /** |
执行
在项目中执行初始化main方法,出现如下图中日志,包含module、service、impl、mapper、xml等相关文件。
如下图,生成的自动生成的文件相关文件目录结构,把我们需要的基本文件都已经生成了。
如下图中是我们生成的实体对象信息,其中包含了lombok和swagger2的相关注解,如果不需要这些,可以在GlobalConfig全局配置文件中进行配置。
好了,本文基于Spring Boot集成AutoGenerator代码生成器的相关功能已经介绍完了,并针对配置进行了Demo演示。大家可以根据项目中具体的需要,进行更加详实的参数配置,以满足个性化的需求。
思考(欢迎留言评论交流)
1、使用AutoGenerator代码生成器有哪些弊端?
2、大家还有哪些常用的代码生成器推荐,分享给大家?
3、关于使用代码生成器,在使用过程中都遇到过哪些奇葩的事情?
4、针对代码生成器你持什么态度?
5、在使用AutoGenerator代码生成器中遇到哪些问题,大家一起讨论学习。
欢迎大家积极交流评论。
福利
本文参加的是:请查收|你有一次免费申请掘金周边礼物的机会 ,在所有评论用户中,将产生2位幸运的评论用户,将获得掘金官方提供的掘金新版徽章 2 枚。
评论区抽奖要求(官方要求):
- 截止到 9月10日,如果评论区超过 10 人互动(不含作者本人),作者可以以自己的名义抽奖送出掘金新版徽章 2 枚(掘金官方承担)。
- 截止到 9月10日,如果评论区超过 10 人互动(不含作者本人),评论数超过 20 条(含作者本人),作者本人额外获得一份掘金周边礼物。
- 评论区热度最高(评论人数+条数综合数据)TOP 1-5:新版徽章1套 或 掘金新版IPT恤1件
获奖条件
热评幸运用户
如果本文评论达到掘金活动的要求,将从热评区用户中抽取一位幸运读者赠送掘金新版徽章 1 枚。如无热评用户,将转为评论幸运用户。
评论幸运用户
如果本文评论达到掘金活动的要求,将所有评论区用户中抽取一位幸运读者赠送掘金新版徽章 1 枚。
开奖规则
将于9月11日(星期六下午|晚上开奖),随机方式抽取。
结语
本次基于Spring Boot集成AutoGenerator代码生成器的项目就完成了,粗枝大叶的建立了一个快速代码生成的框架,当然还有更深入的配置参数去满足个性化的需求。本文主要针对新手入门练习使用,也作为基础查询手册使用,希望本文可以帮助到你。感谢阅读。
作者介绍:【小阿杰】一个爱鼓捣的程序猿,JAVA开发者和爱好者。公众号【Java全栈架构师】维护者,欢迎关注阅读交流。
好了,感谢您的阅读,希望您喜欢,如对您有帮助,欢迎点赞收藏。如有不足之处,欢迎评论指正。下次见。
本文转载自: 掘金