Skip to content

Commit a91e7b6

Browse files
authored
Update 详细的说明文档.md
1 parent b4ed49f commit a91e7b6

1 file changed

Lines changed: 40 additions & 28 deletions

File tree

详细的说明文档.md

Lines changed: 40 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ MAVEN: 3.0+
4848

4949
MySQL 5.7+ / PostgreSQL 9.5+ / Oracle 12C+ / ClickHouse 21.1+ / Presto 0.277+ / Hive 3.1.2+ / ...
5050

51-
Intellij IDEA 2018+ / Eclipse Java EE IDE 4.5.1+
51+
IntelliJ IDEA 2018+ / Eclipse Java EE IDE 4.5.1+
5252

5353
## B2.下载项目
5454

@@ -75,6 +75,10 @@ Eclipse 导入:
7575

7676
源代码在 [APIJSON-Master/APIJSON-Java-Server](https://github.com/Tencent/APIJSON)/APIJSONORM。
7777

78+
IntelliJ IDEA 导入具体见:
79+
80+
https://github.com/APIJSON/APIJSON-Demo/tree/master/APIJSON-Java-Server#3%E7%94%A8-intellij-idea-ultimate-%E6%88%96-eclipse-for-javaee-%E8%BF%90%E8%A1%8C%E5%90%8E%E7%AB%AF%E5%B7%A5%E7%A8%8B
81+
7882
## B4.错误修改
7983

8084
有可能 pom.xml 会报错,例如:
@@ -103,18 +107,18 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xs
103107

104108
## C.开发说明
105109

106-
### C-1.基于Mysql数据库的开发流程
110+
### C-1.基于 MySQL 数据库的开发流程
107111

108112
#### C-1-1.修改数据库链接
109113

110114
如我的数据库信息是这样的
111115

112116
| 数据库参数 ||
113117
| ---------- | ------------------- |
114-
| 地址 | 192.168.71.146:3306 |
118+
| 地址 | localhost:3306 |
115119
| 用户 | root |
116-
| 密码 | root |
117-
| 数据库 | thea |
120+
| 密码 | apijson |
121+
| 数据库 | sys |
118122

119123
那么需要在`DemoSQLConfig`,40-61行,改为自己数据库对应的链接
120124

@@ -158,6 +162,10 @@ https://github.com/APIJSON/APIJSON-Demo/blob/master/APIJSON-Java-Server/APIJSOND
158162

159163
![1542345654422](assets/1542345654422.png)
160164

165+
MySQLWorkbench/Datagrip/Navicat 导入表具体见:
166+
167+
https://github.com/APIJSON/APIJSON-Demo/tree/master/APIJSON-Java-Server#2%E5%AF%BC%E5%85%A5%E8%A1%A8%E6%96%87%E4%BB%B6%E5%88%B0%E6%95%B0%E6%8D%AE%E5%BA%93
168+
161169
导入完成之后。我们可以把项目跑起来看下,以刚刚配置的项目,项目是否能够连上数据库。其中也有一些初始化数据,可以方便我们测试。
162170

163171
### C-1-2-1.更多测试用例
@@ -399,7 +407,7 @@ https://github.com/TommyLemon/APIAuto
399407
}
400408
```
401409

402-
正则表达式`^[0-9]+$`,查询`content`为纯数字的数据,[MySQL的正则语法](http://www.runoob.com/mysql/mysql-regexp.html)如下:
410+
正则表达式`^[0-9]+$`,查询`content`为纯数字的数据,[MySQL的正则语法](http://www.runoob.com/mysql/mysql-regexp.html) 如下:
403411

404412
| 模式 | 描述 |
405413
| ---------- | ------------------------------------------------------------ |
@@ -442,7 +450,7 @@ https://github.com/TommyLemon/APIAuto
442450
}
443451
```
444452

445-
里面的`pictureList``praiseUserIdList`是数组,这种数据在Mysql数据库中是JSON数据格式的
453+
里面的 `pictureList``praiseUserIdList` 是数组,这种数据在 MySQL 数据库中是 JSON 数据格式的
446454

447455
![1542357146401](assets/1542357146401.png)
448456

@@ -465,9 +473,9 @@ https://github.com/TommyLemon/APIAuto
465473

466474
结果是类似这样的,为了显示方便剔除了一些数据。
467475

468-
```json
476+
```js
469477
{
470-
"[]": [
478+
"[]": [ // JavaScript/TypeScript/Python 中可用 data["[]"] 来提取不符合变量名格式的 key 对应的 value,Java 等可以用 data.getJSONArray("[]") 等。
471479

472480
{
473481
"Moment": {
@@ -526,31 +534,31 @@ https://github.com/TommyLemon/APIAuto
526534
}
527535
```
528536

529-
请注意,这里的`page``count`是放在`[]`内的属性,而不是`Moment`对象里。这里`count`表示每页的数量,`page`表示第几页,页数从0开始算
537+
请注意,这里的 `page``count` 是放在 `[] `内的属性,而不是 `Moment` 对象里。这里 `count` 表示每页的数量,`page` 表示第几页,页数从 0 开始算
530538

531539
也许你想看看这个请求对应的SQL语句
532540

533541
```sql
534-
SELECT `id`,`date`,`content`,`praiseUserIdList` FROM `thea`.`Moment` LIMIT 5 OFFSET 0
542+
SELECT `id`,`date`,`content`,`praiseUserIdList` FROM `sys`.`Moment` LIMIT 5 OFFSET 0
535543
```
536544

537-
这里`thea`是我自己的`schema`的名字,你的可能会有所不同。
545+
这里`sys`是我自己的`schema`的名字,你的可能会有所不同。
538546

539547
如果不想分页的,也提供了一套特殊的查询方式。这种查询方式有三种,请求方式类型这样
540548

541-
```json
549+
```js
542550
{
543551
"[]": {
544552
"Moment":{
545553
"@column":"id,date,content,praiseUserIdList"
546554
},
547-
"query": 2
555+
"query": 2
548556
},
549-
"total@":"/[]/total"
557+
"total@":"/[]/total" // key 里的 total 可改成 num 等几乎任意其它名称,还可以用 "info@": "/[]/info" 获取更详细的分页信息
550558
}
551559
```
552560

553-
这里因为`query`的值是2,所有会查询`Moment`表中所有的数据。如果是1的话,则会返回当前表的总数
561+
这里因为 `query` 的值是 2,所有会同时查询 `Moment` 表中的数据和总数。如果是 1 的话,则只会返回当前表的总数:
554562

555563
```json
556564
{"total":59,"code":200,"msg":"success"}
@@ -573,7 +581,7 @@ SELECT `id`,`date`,`content`,`praiseUserIdList` FROM `thea`.`Moment` LIMIT 5 OFF
573581
"@column":"id,date,content,praiseUserIdList",
574582
"praiseUserIdList<>":38710
575583
},
576-
"query": 1
584+
"query": 1
577585
},
578586
"total@":"/[]/total"
579587
}
@@ -603,27 +611,27 @@ SELECT `id`,`date`,`content`,`praiseUserIdList` FROM `thea`.`Moment` LIMIT 5 OFF
603611
}
604612
```
605613

606-
`"@order":"date-,id,content+"`其中,字段的前后顺序表示字段排序的优先级。`id``id+`是等价的,默认就是升序排列。`date-`表示将`date`字段降序排列。
614+
`"@order": "date-,id,content+"` 其中,字段的前后顺序表示字段排序的优先级。`id``id+` 是等价的,默认就是升序排列。`date-` 表示将 `date` 字段降序排列。
607615

608616
##### 关联查询
609617

610618
在讲解关联查询的时候,我们需要先了解下表之间的关系
611619

612-
现在有两张表USER和MOMENT,两张表的关系是下面这样
620+
现在有两张表 User 和 Moment,两张表的关系是下面这样
613621

614622
![1545468294295](assets/1545468294295.png)
615623

616-
MOMENT表示动态,类似微信朋友圈、QQ空间的动态,每一条动态会有一个发表动态的用户USER,所以MOMENT表里会有一个USER表的外键关联
624+
MOMENT表示动态,类似微信朋友圈、QQ 空间的动态,每一条动态会有一个发表动态的用户 User,所以 Moment 表里会有一个和 User 表的外键关联:Moment.userId = User.id。
617625

618626
对于这样的数据关系,我们在查询动态时,很多时候我们会连带着用户一起查处来,这样又如何操作呢
619627

620-
```json
628+
```js
621629
{
622630
"[]": {
623631
"Moment":{
624632
"@column":"id,date,userId",
625-
"id":12
626-
},
633+
"id":12 // 注意 id 是主键,这个数组最多返回 1 条子项(如果 id=12 的表记录存在)
634+
},
627635
"User":{
628636
"id@":"/Moment/userId",
629637
"@column":"id,name"
@@ -632,13 +640,13 @@ MOMENT表示动态,类似微信朋友圈、QQ空间的动态,每一条动态
632640
}
633641
```
634642

635-
这个请求稍微复杂点,首先我们用`[]`对象表示我们是想查询出一个列表,这个列表包含两个部分`Moment``User`
643+
这个请求稍微复杂点,首先我们用 `[]` 对象表示我们是想查询出一个列表,这个列表包含两个部分 `Moment``User`
636644

637-
其中`Moment`是我们想要查询的主要内容,它的写法也和一般查询数据时无异。
645+
其中 `Moment` 是我们想要查询的主要内容,它的写法也和一般查询数据时无异。
638646

639-
`User`是与`Moment`相关联的数据,所以查询的时候我们需要用`id@`来表示他们之间的关联关系
647+
`User` 是与 `Moment` 相关联的数据,所以查询的时候我们需要用 `id@` 来表示他们之间的关联关系
640648

641-
`/Moment/userId`中,最开始的`/`相当于是指明了`[]`的位置,`/Moment`表示`[]`对象下的`Moemnt`对象,`/Moment/userId`表示`Moemnt``userId`字段是与`User``id`关联的。这是一种缺省引用路径,这里等价于完整引用路径 `[]/Moment/userId`
649+
`/Moment/userId` 中,最开始的 `/` 相当于是指明了 `[]` 的位置,`/Moment` 表示 `[]` 对象下的 `Moemnt` 对象,`/Moment/userId` 表示 `Moment``userId` 字段是与 `User``id` 关联的。这是一种缺省引用路径,这里等价于完整引用路径 `[]/Moment/userId`
642650

643651
响应的数据:
644652

@@ -666,7 +674,7 @@ MOMENT表示动态,类似微信朋友圈、QQ空间的动态,每一条动态
666674

667675
##### 分组查询
668676

669-
在了解分组查询之前,我们需要先了解下APIJSON所支持的函数
677+
在了解分组查询之前,我们需要先了解下 APIJSON 所支持的部分常见函数:
670678

671679
| 函数名 | 说明 |
672680
| ------ | -------------------------- |
@@ -676,6 +684,10 @@ MOMENT表示动态,类似微信朋友圈、QQ空间的动态,每一条动态
676684
| min | 统计分组下,某字段的最小值 |
677685
| avg | 统计分组下,某字段的平均值 |
678686

687+
具体见 AbstractSQLConfig 中 SQL_FUNCTION_MAP 配置的所有 SQL 函数 :
688+
689+
https://github.com/Tencent/APIJSON/blob/master/APIJSONORM/src/main/java/apijson/orm/AbstractSQLConfig.java#L286-L765
690+
679691
比如,如果只是单纯的查出最大值,这样请求就可以了
680692

681693
```json

0 commit comments

Comments
 (0)