虽然写了很久的CRUD,但是依旧觉得写好CRUD是一件非常难且麻烦的事情,以下的情况在开发过程中应该都遇到过:
对于使用Mybatis的开发者还会存在这些问题:
按照这种开发模式,需要重启好多次应用,对于每次启动都需要几分钟的应用来说开发体验简直就是灾难。基于上述的问题,开发了mybatis-sql-viewer插件,基于此插件可以实现以下能力而不需要启动应用:
基于此插件以上的问题在编码阶段即可解决:
基于此插件可以提高CRUD的效率及SQL质量,开发流程可以转换为如下模式:
上述的规约均来自《阿里巴巴Java开发手册》中的MySQL数据库章节。
IDEA中安装:
手动安装:
因为需要拉取数据库表的元数据信息、执行SQL,所以使用前需要配置一下数据源。
因为需要拉取数据库表的元数据信息、执行SQL,所以使用前需要配置一下数据源。
因为需要拉取数据库表的元数据信息、执行SQL,所以使用前需要配置一下数据源。
支持多数据源配置,点击「datasource」按钮即可完成数据源的创建、选择、删除、测试。
此插件有两种模式:mybatis模式和非mybatis模式。差别在于mybatis模式支持以下功能:
将mybatis mode
的勾选框关闭即可使用非mybatis模式
,然后在「statement」Tab左栏手写SQL即可。
将mybatis mode
的勾选框选中即可使用mybatis模式
,mybatis模式
主要添加了mapper接口方法参数mock、文件跳转及mybatis文件扫描的功能。
在mapper接口或XML文件中点击「sql」图标,即可生成mapper方法参数随机值,如果对生成的随机不满意或不满足条件,可以手动修改进行自定义。然后点击「statement」Tab即可使用该参数将mybatis的xml实现转换成真实的SQL语句。
支持文件和项目两个维度扫描。
点击<mapper namespace="xxx.xxx.xxx">
或者namespace
对应的mapper接口旁边的「sql」图标即可完成文件维度mybatis sql的扫描
点击「mybatis sql scan」即可进行项目维度mybatis sql的扫描
扫描结果左侧是mybatis文件的namespace(对于mapper接口名)及其下的方法名,点击具体的方法,右侧产生其对应的SQL语句,并会对该SQL语句进行规约检查、索引检查并输出此SQL语句的的执行计划
图标说明
:表示SQL规约检查和索引检查均符合要求的SQL语句
:表示SQL规约检查不符合要求的SQL语句
:表示索引检查不符合要求的SQL语句,可能存在全表扫描(含索引的全表扫描)
:表示生成的SQL语句存在问题:可能是SQL编写错误,参数错误,数据库连接错误等
可通过单选框选择对应的条件进行过滤
对于「非mybatis模式」需要左栏编写SQL语句,「mybatis」模式则需要在mapper接口或XML文件中点击「sql」图标生成SQL,右栏自动进行语法校验和规规约校验
点击「result」tab后会自动执行「statement」Tab中的SQL语句。执行结果由3部分组成:执行信息、执行计划及执行结果。
点击「stress」Tab进行压测配置,配置页面如下:
配置说明
use sql directly
:表示直接使用「statement」Tab中的SQL语句进行压测configure parameters
:表示对「statement」Tab中的SQL语句的条件进行参数配置。increase in a constant rate
:并发数按照固定速率增长,增长速率由「递增时长」指定fixed concurrent number
:直接按照指定并发数进行压测配置完成后,点击「stress」按钮即可进行压测,并自动跳转到压测报告「report」Tab
压测报告
压测报告中主要包含指标:
图表包含:
点击「table」Tab时会对「statement」Tab中的SQL语句进行解析,提取出表名称,然后每个表作为一个Tab。如以下语句:
SELECT
state
FROM
CITY
WHERE
country_name IN (
SELECT
name
FROM
COUNTRY
WHERE
id IN (1, 2, 3)
)
SQL语句中包含了两个表:CITY
和COUNTRY
,所以会产生两个Tab,如下图所示:
mock表数据,支持批量数据mock,左栏进行mock数据类型配置,右栏显示mock结果
mock规则
左栏表单中「Mock Type」和「Mock Value」进行mock配置。初始化时,已经按照字段类型设置了默认的配置,可以按照需求进行修改。支持多种mock数据规则:
table.field
词库创建
点击「lexicon」按钮,即可进行词库的创建
mock数据预览
配置好mock配置后,可以点击「preview」按钮进行mock数据的预览,默认会生成50条数据
mock数据
预览数据符合要求后,点击「mock」按钮完成数据的插入,默认插入100条数据,通过修改「Mock Rows」的值指定mock记录数,经测试,插入10w条数据花费时间在10秒内,所以可以进行大批量数据mock。
mock数据清理
mock数据完成后,会存储主键id的范围(持久化存储到本地文件),在对SQL语句进行压测完成后,可以进行清理,避免污染日常真实的测试数据。点击「Clean」按钮即可完成清理工作
相关配置:Preferences(Settings) > Tools > Mybatis Sql Viewer
在实现过程中参考了许多非常优秀的项目,拷贝了很多代码,特此感谢。
欢迎提出 Contributions, issues 与 feature requests!
随时查看 issues page.
如果这个项目对你产生了一点的帮助,请为这个项目点上一颗 ⭐️
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。