Skip to content

Commit b9ad2fa

Browse files
committed
docs: add English documentation
1 parent 094040a commit b9ad2fa

File tree

5 files changed

+377
-28
lines changed

5 files changed

+377
-28
lines changed

README.md

Lines changed: 40 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -11,39 +11,50 @@
1111
[中文](README.md) |
1212
[ENGLISH](README_EN.md)
1313

14-
# 简介
14+
# 1. 简介
1515

1616
虽然写了很久的CRUD,但是依旧觉得写好CRUD是一件非常难且麻烦的事情,以下的情况在开发过程中应该都遇到过:
1717

18-
- SQL测试好麻烦,写错了SQL字段或者表名称,修改完要重启(几分钟过去了)
19-
- 造数据好麻烦,特别是还存在表关联的情况,数据内容不真实,还容易超出字段长度,让人抓狂
18+
- SQL的编写需要细心,写错了SQL字段或者表名称,修改完要重启(几分钟过去了)
19+
- SQL编写好后进行测试时,造数据也好麻烦,特别是还存在表关联的情况,数据内容不真实,还容易超出字段长度,让人抓狂
2020
- SQL好不容易能跑了,又会有以下的疑问
2121
- 符不符合SQL开发规范?
22-
- 是否能命中索引?
23-
- 性能怎么样,是否会存在慢SQL?
24-
- 日常环境数据太少,如何模拟SQL在线上运行的真实情况?
22+
- 是否能命中索引?又可能命中哪个索引?
23+
- 日常环境数据太少,如何模拟SQL在生产环境下运行的真实情况?
24+
- 性能怎么样,最大TPS可以达到多少?数量大时是否会存在慢SQL?
25+
- TP99/TP90、最大RT/平均RT、平均TPS是多少呢?
2526

2627
对于使用Mybatis的开发者还会存在这些问题:
2728

2829
- Mapper接口方法和XML标签不对应,修改完要重启(又几分钟过去了)
29-
- XML中多写了一个`,`,又没有错误提示,接口测试调用时才发现,修改完又又要重启(好多个几分钟过去了)
30+
- XML中多写了一个逗号或者分号,又没有错误提示,接口测试调用时才发现,修改完又又要重启(好多个几分钟过去了)
3031
- 这个Mapper接口对应的是哪个XML文件?找找十几秒过去了
3132
- 这个XMl文件对应的是哪个Mapper接口?找找十几秒又过去了
32-
- 这个项目中有多少个XML文件?里面是否存在慢SQL?是否都符合开发规范?
33+
- 这个项目中有多少个XML文件?有多少SQL语句?里面是否存在慢SQL?是否都符合开发规范?
3334

3435
![普通开发流程](./docs/dev_process.svg)
3536

3637
按照这种开发模式,需要重启好多次应用,对于每次启动都需要几分钟的应用来说开发体验简直就是灾难。基于上述的问题,开发了mybatis-sql-viewer插件,基于此插件可以实现以下能力而不需要启动应用:
3738

3839
![mybatis-sql-viewer能力](./docs/mybatis-sql-viewer_function.svg)
3940

41+
基于此插件以上的问题在**编码阶段**即可解决:
42+
43+
- SQL的编写好麻烦,写错了SQL字段或者表名称,修改完需要重启 --> **语法校验**
44+
- SQL编写好后进行测试时,造数据麻烦,特别是存在表关联的情况,数据内容不真实,容易超出字段长度报错 --> **多种数据mock方式,自动关联**
45+
- SQL好不容易跑起来了,又会有以下的疑问:
46+
- 符不符合SQL开发规范? --> **SQL规范检查**
47+
- 是否能命中索引,可能命中哪个索引? --> **SQL索引检查&SQL执行计划**
48+
- 日常环境数据量太少,如何模拟SQL在生产环境下运行的真实情况? --> **支持大批量数据mock**
49+
- 性能怎么样,最大TPS可以达到多少?数量大时是否会存在慢SQL? --> **SQL语句压测,结果一目了然**
50+
4051
基于此插件可以提高CRUD的效率及SQL质量,开发流程可以转换为如下模式:
4152

4253
![基于mybatis-sql-viewer插件的开发流程](./docs/mybatis-sql-viewer_dev_process.svg)
4354

4455
上述的规约均来自《阿里巴巴Java开发手册》中的MySQL数据库章节。
4556

46-
# 安装
57+
# 2. 安装
4758

4859
- **IDEA中安装:**
4960
- <kbd>Preferences(Settings)</kbd> > <kbd>Plugins</kbd> > <kbd>Marketplace</kbd> > <kbd>Search<b>"mybatis sql viewer"</b></kbd> > <kbd>Install</kbd>
@@ -52,7 +63,7 @@
5263
-[releases](https://github.com/linyimin-bupt/mybatis-sql-viewer/releases)页面中下载最新版本的zip文件
5364
- <kbd>Preferences(Settings)</kbd> > <kbd>Plugins</kbd> > <kbd>⚙️</kbd> > <kbd>Install plugin from disk...</kbd> -> 选择下载的文件安装
5465

55-
# 使用
66+
# 3. 使用
5667

5768
**因为需要拉取数据库表的元数据信息、执行SQL,所以使用前需要配置一下数据源。**
5869

@@ -64,6 +75,8 @@
6475

6576
![](./docs/datasource.jpg)
6677

78+
## 3.1 模式
79+
6780
此插件有两种模式:mybatis模式和非mybatis模式。差别在于mybatis模式支持以下功能:
6881

6982
- mapper接口方法参数mock
@@ -75,31 +88,31 @@
7588
- 基于mock参数将mapper接口方法的xml转换成真实SQL
7689
- 按照文件/项目维度扫描XML文件,并生成对应的真实SQL语句,并进行规约/索引相关校验
7790

78-
## 非mybatis模式
91+
### 3.1.1 非mybatis模式
7992

8093
`mybatis mode`的勾选框关闭即可使用`非mybatis模式`,然后在「statement」Tab左栏手写SQL即可。
8194

8295
![](./docs/mybatis-mode.jpg)
8396

84-
## mybatis模式
97+
### 3.1.2 mybatis模式
8598

8699
`mybatis mode`的勾选框选中即可使用`mybatis模式``mybatis模式`主要添加了mapper接口方法参数mock、文件跳转及mybatis文件扫描的功能。
87100

88101
在mapper接口或XML文件中点击「sql」图标,即可生成mapper方法参数随机值,如果对生成的随机不满意或不满足条件,可以手动修改进行自定义。然后点击「statement」Tab即可使用该参数将mybatis的xml实现转换成真实的SQL语句。
89102

90103
![随机参数](./docs/param_random.jpg)
91104

92-
### mybatis sql扫描
105+
### 3.1.3 mybatis sql扫描
93106

94107
支持文件和项目两个维度扫描。
95108

96-
1. 文件维度扫描
109+
#### 3.1.3.1. 文件维度扫描
97110

98111
点击`<mapper namespace="xxx.xxx.xxx">`或者`namespace`对应的mapper接口旁边的「sql」图标即可完成文件维度mybatis sql的扫描
99112

100113
![文件维度扫描](./docs/scan_file.jpg)
101114

102-
2. 项目维度
115+
#### 3.1.3.2 项目维度
103116

104117
点击「mybatis sql scan」即可进行项目维度mybatis sql的扫描
105118

@@ -126,21 +139,21 @@
126139
- error:存在错误的SQL语句,可能是SQL编写错误,参数错误,数据库连接错误等
127140

128141

129-
## 「sql」Tab
142+
## 3.2 SQL语句
130143

131-
### 1. 「statement」Tab
144+
### 3.2.1. 语法校验&规约检查
132145

133146
对于「非mybatis模式」需要左栏编写SQL语句,「mybatis」模式则需要在mapper接口或XML文件中点击「sql」图标生成SQL,右栏自动进行语法校验和规规约校验
134147

135-
1. SQL语法校验
148+
1. **SQL语法校验**
136149

137150
![statement效果之语法校验](./docs/sql_statement_syntax.jpg)
138151

139-
2. 规约校验
152+
2. **规约校验**
140153

141154
![statement效果之规约检查](./docs/sql_statement_rule.jpg)
142155

143-
### 2. 「result」Tab
156+
### 3.2.2. SQL执行
144157

145158
点击「result」tab后会自动执行「statement」Tab中的SQL语句。执行结果由3部分组成:执行信息、执行计划及执行结果。
146159

@@ -150,7 +163,7 @@
150163

151164
![result效果](./docs/result.jpg)
152165

153-
### 3. 「stress」Tab
166+
### 3.2.3. SQL压测
154167

155168
点击「stress」Tab进行压测配置,配置页面如下:
156169

@@ -192,7 +205,7 @@
192205

193206
![压测报告](./docs/stress_report.jpg)
194207

195-
## 「table」Tab
208+
## 3.3 SQL表
196209

197210
点击「table」Tab时会对「statement」Tab中的SQL语句进行解析,提取出表名称,然后每个表作为一个Tab。如以下语句:
198211

@@ -216,21 +229,21 @@ SQL语句中包含了两个表:`CITY`和`COUNTRY`,所以会产生两个Tab
216229

217230
![specify table tab](./docs/specify_table.jpg)
218231

219-
### 1. 「schema」Tab
232+
### 3.3.1. 字段
220233

221234
1. 左栏显示表的字段信息:字段名称、类型、是否可为NULL、默认值、索引、注释说明等信息
222235
2. 右栏显示对表进行建表规约检查的结果:如表名、字段名是否包含大写字母或特殊字符等检查
223236

224237
![schema tab](./docs/schema_tab.jpg)
225238

226-
### 2. 「index」Tab
239+
### 3.3.2. 索引
227240

228241
1. 左栏显示表的索引信息
229242
2. 右栏显示对索引进行规约检查的结果
230243

231244
![schema tab](./docs/schema_index.jpg)
232245

233-
### 3. 「mock」Tab
246+
### 3.3.3. 数据mock
234247

235248
mock表数据,支持批量数据mock,左栏进行mock数据类型配置,右栏显示mock结果
236249

@@ -259,7 +272,7 @@ mock表数据,支持批量数据mock,左栏进行mock数据类型配置,
259272
- increment:递增
260273
- fixed:固定值
261274
- regex:正则
262-
- none:不进行mock,生成insert语句时包含此字段
275+
- none:不进行mock,生成insert语句时不包含此字段
263276

264277

265278
**词库创建**
@@ -286,7 +299,7 @@ mock数据完成后,会存储主键id的范围(持久化存储到本地文
286299

287300
![mock clean](./docs/mock_clean.jpg)
288301

289-
# 参考
302+
# 4. 参考
290303

291304
在实现过程中参考了许多非常优秀的项目,拷贝了很多代码,特此感谢。
292305

0 commit comments

Comments
 (0)