mybatis-sql-viewer插件主要提供能力:将mybatis xml转成真实SQL语句、参数mock、SQL规范检查、SQL索引检查、SQL运行、SQL压测及Mybatis SQL语句扫描。
1. 简介
虽然写了很久的CRUD,但是依旧觉得写好CRUD是一件非常难且麻烦的事情,以下的情况在开发过程中应该都遇到过:
- SQL的编写需要细心,写错了SQL字段或者表名称,修改完要重启(几分钟过去了)
- SQL编写好后进行测试时,造数据也好麻烦,特别是还存在表关联的情况,数据内容不真实,还容易超出字段长度,让人抓狂
- SQL好不容易能跑了,又会有以下的疑问
- 符不符合SQL开发规范?
- 是否能命中索引?又可能命中哪个索引?
- 日常环境数据太少,如何模拟SQL在生产环境下运行的真实情况?
- 性能怎么样,最大TPS可以达到多少?数量大时是否会存在慢SQL?
- TP99/TP90、最大RT/平均RT、平均TPS是多少呢?
对于使用Mybatis的开发者还会存在这些问题:
- Mapper接口方法和XML标签不对应,修改完要重启(又几分钟过去了)
- XML中多写了一个逗号或者分号,又没有错误提示,接口测试调用时才发现,修改完又又要重启(好多个几分钟过去了)
- 这个Mapper接口对应的是哪个XML文件?找找十几秒过去了
- 这个XMl文件对应的是哪个Mapper接口?找找十几秒又过去了
- 这个项目中有多少个XML文件?有多少SQL语句?里面是否存在慢SQL?是否都符合开发规范?
按照这种开发模式,需要重启好多次应用,对于每次启动都需要几分钟的应用来说开发体验简直就是灾难。基于上述的问题,开发了mybatis-sql-viewer插件,基于此插件可以实现以下能力而不需要启动应用:
基于此插件以上的问题在编码阶段即可解决:
- SQL的编写好麻烦,写错了SQL字段或者表名称,修改完需要重启 --> 语法校验
- SQL编写好后进行测试时,造数据麻烦,特别是存在表关联的情况,数据内容不真实,容易超出字段长度报错 --> 多种数据mock方式,自动关联
- SQL好不容易跑起来了,又会有以下的疑问:
- 符不符合SQL开发规范? --> SQL规范检查
- 是否能命中索引,可能命中哪个索引? --> SQL索引检查&SQL执行计划
- 日常环境数据量太少,如何模拟SQL在生产环境下运行的真实情况? --> 支持大批量数据mock
- 性能怎么样,最大TPS可以达到多少?数量大时是否会存在慢SQL? --> SQL语句压测,结果一目了然
基于此插件可以提高CRUD的效率及SQL质量,开发流程可以转换为如下模式: