03 MyBatisCodeHelperPro
文章目录
简介
个人使用经验来看,无愧是目前最好用的Mybatis代码生成插件。简单列下日常高频使用的功能特性:
- 通过java类生成建表语句
- 通过数据库生成crud代码
- Java接口与xml互相跳转
- 通过方法名生成sql
- 一键生成mybatis接口的testcase
安装&配置
安装
设置-插件,搜索mybatiscodehelperpro,emm…有2个。
- 如果你的IDEA是使用eval reset插件不断试用的(适用2021.2.2及以下版本),请下载Marketplace Edition版本
- 如果你的IDEA是2020.1及以下版本,请参考https://zhile.io/2019/04/23/mybatis-code-helper-pro-crack.html…
配置
全局配置
设置Mapper接口的后缀名,通常设置为Dao或者Mapper; 设置试用java8的日期及Integer替代Byte类型;设置Model类后缀如PO。
项目配置
基本上开箱即用,我通常会配置一些批量的代码生成方法。
- selectByIdIn、updateByIdIn、deleteByIdIn
- 另外
selectByAll不建议使用
使用
简介中的5个功能特性,其实就是我的一般使用姿势。尤其是1、2、5,主要用作新增表时的代码生成。一般使用流程如下:
- 编写PO对象,根据PO对象生成表结构 -> 可选,大家可能也习惯直接先写建表语句
- 建表,再通过插件代码生成接口、mapper、po -> 核心功能,代码生成
- 对mapper生成单元测试类 -> 可选,简单易用的单测功能
- 根据方法名生成mapper -> 比较好玩,大家可能比较喜欢用这个,我个人的习惯使用selectByExample,避免每次新增SQL都要改动到dao层
通过java类生成建表语句
右击PO对象,生成->generate mybatis files。默认会根据PO字段生成,并填充注释等,这里在检查下表名、类型、默认值,索引等。然后可以预览SQL查看是否🆗。
通过数据库生成crud代码
添加数据源
首先在IDEA右侧的侧边栏【数据库】,添加一个数据源,这里我以一个本地h2数据源示例。
代码生成
先建表,右击数据表,选择mybatis-generator,来到我们的代码生成可视界面~
先对每个表使用mybatis-generator,我们通常都会定制列等,之后是可以使用批量方式覆盖的。
代码生成配置:源码路径、定制列等
这些选项基本上是我们当前使用的最佳实践:
- useGeneratedKey:返回自增主键
- 勾选:其他的都不用标,没啥意义或者有冲突或者不通用
- @Data;Builder基本上用不到
- 不生成jdbcType:自动检测,尽量使用标准的数据类型,产生标准的SQL。也能避免修改了db数据类型但mapper映射错误的场景
- @Mapper注解:建议勾选,这个是个人的习惯,因为我们扫描mybatis会按@Mapper注解来扫描注解代理类,不会直接只按包路径,避免非mapper接口被产生代理类
- 生成注释:生成po对象的注释
- 生成selectByExample:很香,dao层一次生成不用改动!
- 定制列:一般定制boolean字段的类型和名称、还有时间类型我们的习惯是使用Instant
更多SQL生成:batchInsert、batchUpdate、insertOnDuplicate
- batchInsert:批量插入
- batchUpdateSelective:适合简单的集合size比较小的按id批量更新
- insertOnDuplicate:单条数据insertOnDuplicate,适合逻辑删除场景的插入操作。(如果有批量的insertOnDuplicate,又是个优雅的适合批量更新的方法)
定制默认方法:insertSelective、updateByPrimaryKey、updateByPrimaryKeySelective…
这个没得说的,updateByPrimaryKey和updateByPrimaryKeySelective就是全量更新和增量更新的区别,大部分场景我们是增量更新,但如果比如需要将字段变更成null,又需要全量更新。(对于string,使用空字符串替代null没问题,但如时间的类型就不能)