本文主要内容:
- 如何使用MyBatisX生成代码
- 如何导入自定义代码生成模板
- 纯净的MyBatis3和MyBatis-Plus3代码生成模板:MyBatisX-Template-Example
前置知识:
- 知道MyBatisX是一款基于MyBatis-Plus的代码生成工具,在IDEA中,可以根据表,快速生成其对应的实体、Mapper、Service
- 了解模板引擎FreeMarker
写作背景:
- MyBatisX默认的代码生成模板生成的代码很不好,例如:生成的实体类上setter、getter上都有数据库字段注释
- 生成的实体类含有Swagger相关注解
- 不能同时生成实体与mapper和service
- 为了解决以上问题,我们可以采取自定义代码生成模板的方式解决,还可以个性化地定义代码生成模板
内容导览:
安装MyBatisX
安装后重启IDEA
基本用法
连接数据库,选中表,右键,选择“MyBatisX-Generator”
根据实际的需要填写,重点关注“base package, relative package, tableName”,然后点击Next
annotation:生成的代码中是否加上注解(例如,@TableName等注解)。None为没有注解
options
- toString/hashCode/equals:是否生成相应的方法。
- Lombok:勾选后实体类自动添加Lombok的@Data注解。
- Actual Column:勾选后,生成的实体类属性名和表中字段名大小写会保持一致。例如,表中有字段classID,勾选该选项后生成的属性名也为classID,未勾选则为classid。
- Actual Column Annotation:是否对所有属性名都加上注解标明对应字段,例如@TableName。
- JSR310:Data API:是否使用新标准的时间日期API,包括 Instant、Clock、LocalDateTime、DateTimeFormatter、ZonedDateTime 以及替换 Calendar 的 Chronology 等类。
template:生成mapper、service等相关代码所使用的模板。
生成实体类存在的问题
如上图,在“generate options”界面,template选择“custom-model-swagger”,点击“Finish”
自动导入了字段校验、swagger、空注释
找到生成该实体类的模板文件:在项目同级的目录下,Scratches and Consoles -> Extensions -> MybatisX -> templates
我们发现模板文件中就有字段校验、swagger等逻辑
生成mapper、service存在的问题
在“generate options”界面,template选择“mybatis-plus3”,点击“Finish”
生成的代码中含有冗余的注释
找到生成该类的模板文件:在项目同级的目录下,Scratches and Consoles -> Extensions -> MybatisX -> templates
我们发现模板文件中就有注释的相关逻辑
自定义生成模板
基于上文中提到的问题,我们想要自己定义生成的模板,例如不需要Swagger、使用validation。
MyBatisX官方说明:https://baomidou.com/pages/ba5b24/ 搜索(Ctrl+F):生成代码的模板配置
在项目同级的目录下,Scratches and Consoles -> Extensions -> MybatisX:
找到MyBatisX存放模板文件的位置
本次实践中,我们定义两套模板,快速生成最基础的MyBatis代码和MyBatis-Plus代码。
配置我已经上传,点击即可下载:MyBatisX-Template-Example
将下载好的模板文件放置在templates文件夹
其中,ks-mb3是生成MyBatis3的基础模板,ks-mbp3是生成MyBatis-Plus3的基础模板
在生成时,选择我们自己定义的模板
总结
- 本文主要介绍了使用MyBatisX生成代码,但是生成的代码有很多默认的附加内容是我们不需要的,所以我们使用自定义的代码生成模板
- 本文没有讲解模板代码是如何编写,我们可以根据其提供的默认模板,修改一些内容(其本质是模板引擎FreeMarker),就是我们需要的代码生成模板。后续如果有新的用法,再做补充
- 提供了2套纯净的代码生成模板,直接下载使用
Name:
Email:
Link: