前言
你是否碰见过这样的情况:
- Dao/Mapper 层无法一键跳转到对应 Xml 中的 SQL,还要复制粘贴去对比;
- 需要对新建的表进行增删改查操作,复制粘贴一套 Xml,然后改改改;
- 需要对新建的表创建 DTO 对象,对着数据库表结构看花眼一个个设置属性;
- Mapper 命名麻烦,自己想的名字还不够规范;
MybatisX 能很好的解决这些问题。
1. MybatisX 介绍
MybatisX 是一款基于 IDEA 的快速开发插件,通过对 MyBatis 和 MyBatis-Plus 的适配,实现 DTO、Xml、SQL 等模式化代码的一键生成,并可以定制化模板,是 Java 开发工程师的好帮手。
2. 使用准备
2.1 安装插件
Intellij IDEA → Settings → Plugins → Marketplace → MybatisX → 重启 IDEA
安装完插件需要重启,另外如果进入不了 Marketplace 可以尝试挂代理
2.2 配置数据源
Database → 点击➕号 → Data Source → MySQL → 填写数据库信息 → Apply → Make Global → OK
不要忘记点击 Make Global 按钮,不然每一个工程都要进行数据源配置,非常麻烦
2.3 选择自己常用数据库
选择数据源 → 点击 Data Source Properties(或者数据源后的 1 of xxx) → Schemas →选择数据源
这一步主要是为了查找方便,常用的数据库一般就几个,只勾选常用的利于操作
![](https://img-blog.csdnimg.cn/9505f8012b034e269c8f98a12d6014cc.png#pic_center)
3. 使用场景
3.1 XML 跳转
在 Mapper 层中点点击这个按钮可以直接跳转到对应的 Xml 或者 SQL 语句
3.2 生成代码
可以生成 Mapper 层、Xml、DTO 代码,并可以指定生成的模板、路径、语句等,非常便捷,是核心功能
表 → 右键 → MybatisX-Generator
标签 | 解释 |
---|---|
module path | 模块路径。点击编辑框可以选择在哪个模块里生成代码。 |
base package | 基础包名。在基础路径的基础上生成的包名。 |
base path | 基础路径。在模块路径的基础上生成的包名。 |
relative package | 相对包名。DTO 对象会在这里生成。 |
encoding | 编码格式,默认 UTF-8。 |
extra class suffix | 附加类后缀。DTO 的类名会在生成后添加指定的后缀。 |
ignore filed prefix | 忽略字段前缀。DTO 的字段会在生成后删除指定的前缀。 |
ignore filed suffix | 忽略字段后缀。DTO 的字段会在生成后删除指定的后缀。 |
class name strategy | 类名生成策略。可选:camel(驼峰结构)和 same as tablename(与表名相同) |
superClass | DTO 对象继承的父类。 |
ignore table prefix | 忽略表前缀。DTO 的类名会在生成后删除指定的前缀。 |
ignore table suffix | 忽略表后缀。DTO 的类名会在生成后删除指定的后缀。 |
点击 Next,进入 Mapper 和 Xml 的设置
标签 | 解释 |
---|---|
annotation | 注解类型。目前支持四种注解:None(无注解)、Mybatis-Plus 3、Mybatis-Plust 2、JPA,如果没有使用直接选 None 即可。 |
options | 额外的一些选项。Comment(注释,建议勾选);toString/hashCode/equals(重写这些方法,根据需要勾选);Lombok(使用 Lombok 注解方式,如果使用了 Lombok 建议勾选);Actual Column(实际列名,比如 user_name 列对应的属性也叫 user_name,不勾选就是 ;userName,不建议勾选);Actual Column Annotation(添加列注解,建议勾选);JSR310:Date API(是否选用新标准的时间 API,建议勾选);Model(是否生成 DTO 模型,根据需要勾选) |
template | 生成模板。custom-model-swagger(属性上会自动增加 swagger 的相关注解);default-all(生成所有常用的 curd 方法,包括 Mapper 和 Xml);default-empty(生成的 Mapper 和 Xml 没有方法);mybatis-plus2;mybatis-plus3 |
注意在生成过程中要保持数据源的连接状态,不然无法生成
3.3 重置模板
重置模板功能可以自定义生成的 Xml 文件,或者刷新最新版本的模板格式
Project → Scratches and Consoles → Extensions → MyBatisX → templates
刷新默认的模板需要先删除模板文件,如删除 defalut-all,然后右键 templates → Restore Default Extensions
自定义模板内容
名称 | 含义 |
---|---|
tableClass.fullClassName | 类的全称(包括包名) |
tableClass.shortClassName | 类的简称 |
tableClass.tableName | 表名 |
tableClass.pkFields | 表的所有主键字段 |
tableClass.allFields | 表的所有字段 |
tableClass.baseFields | 排除主键和 blob 的所有字段 |
tableClass.baseBlobFields | 排除主键的所有字段 |
tableClass.remark | 表注释 |
字段信息
名称 | 含义 |
---|---|
field.fieldName | 字段名称 |
field.columnName | 列名称 |
field.jdbcType | jdbc 类型 |
field.columnLength | 列的长度 |
field.columnScale | 列的精度 |
field.columnIsArray | 字段类型是不是数组类型 |
field.shortTypeName | java 类型短名称, 通常用于定义字段 |
field.fullTypeName | java 类型的长名称, 通常用于导入 |
field.remark | 字段注释 |
field.autoIncrement | 是否自增 |
field.nullable | 是否允许为空 |
配置信息
名称 | 含义 |
---|---|
baseInfo.shortClassName | 配置名称 |
baseInfo.tableName | 配置文件名称 |
baseInfo.pkFields | 配置名称 |
baseInfo.allFields | 后缀 |
baseInfo.baseFields | 包名 |
baseInfo.baseBlobFields | 模板内容 |
baseInfo.remark | 相对模块的资源文件路径 |
3.4 根据 Mapper 命名生成 SQL
这是 Mybatis 最强大的地方,可以根据命名生成 SQL,并且可以自定义生成方式
如图,右键 Mapper 中的名字,选择 Show ContextActions,如果需要自定义则选择第二个,直接生成则选择第一个。
如果选择第二个,可以根据需要设置生成的方式,一般默认即可,点击 OK 生成
上图 Generate Options 里有一个插件作者的错误,大家可以找找看,本文作者已经提了 issue 了,应该很快会被修复
- 生成规则:遵循前缀匹配规则
- insert:前缀可以使用 add、insert、new、create 等
- delete:前缀可以使用 del、delete、cancel 等
- update:前缀可以使用 set、update、modify 等
- select:前缀可以使用 find、query、select、get、list、look、count、search 等
- 查询一个:selectOne
- 查询所有:selectAll
因为官方没有给出匹配的文档,但是按照规范的命名规则基本都可以匹配,感兴趣的可以扒一下源码。
4. 写在最后
MybatisX 可以独立于 MyBatis-Plus,但是于 MyBatis-Plus 的适配性更好,有条件的开发者建议结合两者使用,可以更加提高开发效率,还可以添加官方群,与作者面对面互动交流学习。
5. 官方文档
6. 团队介绍
「三翼鸟数字化技术平台-交易交付平台」负责搭建门店数字化转型工具,包括:海尔智家体验店小程序、三翼鸟工作台APP、商家中心等产品形态,通过数字化工具,实现门店的用户上平台、交互上平台、交易上平台、交付上平台,从而助力海尔专卖店的零售转型,并实现三翼鸟店的场景创新。