# 功能描述
实现对数据库的增、删、改操作,可同时并行或嵌套多种操作类型和多条记录。
后可配置操作完成立即查询并将查询结果返回前台。
# 组成部分
本格式为JSON数组或JSON,由 head 和 option 以及 query 三个部分构成。
[
{
head: { }, /* 必配,如果走通用接口则必须配置 */
data: { }, /* 必配,选项 */
query: { } /* 保存完后立即进行查询的选项,格式等同于提交查询格式query-request的option项,用于保存后的查询返回最新数据 */
}
]
2
3
4
5
6
7
# 选项一览表
[{
head: {
dbType:'mongodb' //选配, 数据库类型,支持关系数据库和非关系数据库,默认为关系数据库, 非关系数据库目前支持mongodb/elasticsearch
module: 'sys_position', //模块编号,在sys_module表中找
source: 'sysPositionList_01', //sql语句编号,在sys_data_sql表中找
view: '', //视图名称,在数据库视图名称中找
table: '', //表名称,在sys_module表中maintable字段和subtable字段中找
},
query:{} //选配,等同于request-query的option项,用于保存后的查询返回最新数据
data: [
{ //插入操作
action: "add", //必配, 操作类型:插入
option: { //选配
keyVal: false //选配, 是否在新增数据后返回新增数据的主键值
},
rows: [ //必配, 可能插入多行
{
attFile: [], //选配, 如果该文档中包含附件,则指明包含附件路径的字段名称, 多个字段间逗号分隔
row: { //必配, 新增一行的数据
w1: "12", //w1字段的值
w2: "1", //w2字段的值
... //其它字段的值
},
filter:[] //选配, 查询条件, 与上一层的filter条件合并来查询结果记录数大于0时才能进行本条记录的插入操作
serverEvn:[] //选配, 嵌套操的又一个save-request操作
}
],
filter: [] //选配, 查询条件, 如果rows内的filter还要,则需要与rows内的filter进行合并
serverEvn:[] //选配, 嵌套操的又一个save-request操作
},
{ //编辑操作
action: "edit", //必配, 操作类型:修改
rows: [ //必配, 可能修改多行
{
attFile: [], //选配, 如果该文档中包含附件,则指明包含附件路径的字段名称
keyVal: "111", //选配, 主键字段的值,如果不配置,则必须配置filter条件来确定数据行
row: { //必配, 编辑一行的新数据
w1: "12", //w1字段的值
w2: "1", //w2字段的值
... //其它字段的值
},
filter:[], //选配, 查询条件, 与上一层的filter条件合并来查询结果记录数大于0时才能进行次编辑操作
serverEvn:[] //选配, 嵌套操的又一个save-request操作
},
],
filter: [], //选配, 查询条件, 如果rows内的filter还要,则需要与rows内的filter进行合并
serverEvn:[] //选配, 嵌套操的又一个save-request操作
},
{ //删除操作
action: "del", //必配, 操作类型:修改
rows: [ //必配, 可能修改多行
{
attFile: [], //选配, 如果该文档中包含附件,则指明包含附件路径的字段名称,用于删除附件
keyVal: "111", //选配, 主键字段的值,如果不配置,则必须配置filter条件来确定数据行
filter:[], //选配, 查询条件, 与上一层的filter条件合并来查询结果记录数大于0时才能进行次编辑操作
serverEvn:[] //选配, 嵌套操的又一个save-request操作
}
],
filter: [], //选配, 查询条件, 如果rows内的filter还要,则需要与rows内的filter进行合并
serverEvn:[] //选配, 嵌套操的又一个save-request操作
}
]
}]
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# head选项
# 选项格式
说明:head 结构体为 JSON 格式。如果不使用自定义接口,则必须配置头部参数
{
head: {
dbType:'mongodb' //选配, 数据库类型,支持关系数据库和非关系数据库,默认为关系数据库, 非关系数据库目前只支持mongodb
module: 'sys_position', //模块编号,在sys_module表中找
source: 'sysPositionList_01', //sql语句编号,在sys_data_sql表中找
view: '', //视图名称,在数据库视图名称中找
table: '', //表名称,在sys_module表中maintable字段和subtable字段中找
}
}
2
3
4
5
6
7
8
9
# 选项说明
说明:head 结构体为 JSON 格式,通过通用接口提交则必须配置此。
参数 | 必填 | 数据类型 | 默认值 | 可选值 | 说明 |
---|---|---|---|---|---|
dbType | 否 | String | mongodb | 数据库类型,除非指明是非关系数据库mongodb,其余都为关系数据库 | |
module | 否 | String | 说明本组件所属模块编号,建议设置,用于数据操作时的权限判断以及获取该模块的主表 | ||
source | 否 | String | 说明本组件操作的sql语句编号(需事先设置sql语句并编号) | ||
view | 否 | String | 说明本组件操作的视图编号(需事先在数据库中设置视图),使用本项必须设置module值 | ||
table | 否 | String | 说明本组件操作的表名,使用本项必须设置module值,只有在该module下有子表并且使用子表时才设置 |
# data选项
# 选项总体格式
data选项用于告诉后端对数据的操作,主要操作功能有:
(1) 插入数据(一条或多条)
(2) 修改数据(一条或多条)
(3) 删除数据(一条或多条)
(4) 在插入/修改/删除的时候可同时并行或嵌套操作
data选项总体简要格式:
data: [
{插入/删除/修改 操作格式},
{插入/删除/修改 操作格式},
...
]
2
3
4
5
data选项总体详细格式:
data: [
{ //插入操作
action: "add", //必配, 操作类型:插入
option: { //选配
keyVal: false //选配, 是否在新增数据后返回新增数据的主键值
},
rows: [ //必配, 可能插入多行
{
attFile: [], //选配, 如果该文档中包含附件,则指明包含附件路径的字段名称, 多个字段间逗号分隔
row: { //必配, 新增一行的数据
w1: "12", //w1字段的值
w2: "1", //w2字段的值
... //其它字段的值
},
filter:[], //选配, 查询条件, 与上一层的filter条件合并来查询结果记录数大于0时才能进行本条记录的插入操作
serverEvn:[] //选配, 嵌套操的又一个save-request操作
}
],
filter: [], //选配, 查询条件, 如果rows内的filter还要,则需要与rows内的filter进行合并
serverEvn:[] //选配, 嵌套操的又一个save-request操作
},
{ //编辑操作
action: "edit", //必配, 操作类型:修改
rows: [ //必配, 可能修改多行
{
attFile: [], //选配, 如果该文档中包含附件,则指明包含附件路径的字段名称
keyVal: "111", //选配, 主键字段的值,如果不配置,则必须配置filter条件来确定数据行
row: { //必配, 编辑一行的新数据
w1: "12", //w1字段的值
w2: "1", //w2字段的值
... //其它字段的值
},
filter:[], //选配, 查询条件, 与上一层的filter条件合并来查询结果记录数大于0时才能进行次编辑操作
serverEvn:[] //选配, 嵌套操的又一个save-request操作
},
],
filter: [], //选配, 查询条件, 如果rows内的filter还要,则需要与rows内的filter进行合并
serverEvn:[] //选配, 嵌套操的又一个save-request操作
},
{ //删除操作
action: "edit", //必配, 操作类型:修改
rows: [ //必配, 可能修改多行
{
attFile: [], //选配, 如果该文档中包含附件,则指明包含附件路径的字段名称
keyVal: "111", //选配, 主键字段的值,如果不配置,则必须配置filter条件来确定数据行
row: { //必配, 编辑一行的新数据
w1: "12", //w1字段的值
w2: "1", //w2字段的值
... //其它字段的值
},
filter:[], //选配, 查询条件, 与上一层的filter条件合并来查询结果记录数大于0时才能进行次编辑操作
serverEvn:[] //选配, 嵌套操的又一个save-request操作
},
],
filter: [], //选配, 查询条件, 如果rows内的filter还要,则需要与rows内的filter进行合并
serverEvn:[] //选配, 嵌套操的又一个save-request操作
}
]
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# 插入操作格式
说明:在插入数据时可以先查询,查询结果记录数大于0时才能进行插入操作
插入操作格式:
{
action: "add", //必配, 操作类型:插入
option: { //选配
keyVal: false //选配, 是否在新增数据后返回新增数据的主键值
},
rows: [ //必配, 可能插入多行
{
attFile: [], //选配, 如果该文档中包含附件,则指明包含附件路径的字段名称, 多个字段间逗号分隔
row: { //必配, 新增一行的数据
w1: "12", //w1字段的值
w2: "1", //w2字段的值
... //其它字段的值
},
filter:[] //选配, 查询条件, 与上一层的filter条件合并来查询结果记录数大于0时才能进行本条记录的插入操作
serverEvn:[] //选配, 嵌套操的又一个save-request操作
}
],
filter: [], //选配, 查询条件, 如果rows内的filter还要,则需要与rows内的filter进行合并
serverEvn:[] //选配, 嵌套操的又一个save-request操作
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 修改操作格式
说明:在修改数据时可以先查询,查询结果记录数大于0时才能进行插入操作
修改操作格式:
{
action: "edit", //必配, 操作类型:修改
rows: [ //必配, 可能修改多行
{
attFile: [], //选配, 如果该文档中包含附件,则指明包含附件路径的字段名称
keyVal: "111", //选配, 主键字段的值,如果不配置,则必须配置filter条件来确定数据行
row: { //必配, 编辑一行的新数据
w1: "12", //w1字段的值
w2: "1", //w2字段的值
... //其它字段的值
},
filter:[], //选配, 查询条件, 与上一层的filter条件合并来查询结果记录数大于0时才能进行次编辑操作
serverEvn:[] //选配, 嵌套操的又一个save-request操作
},
],
filter: [], //选配, 查询条件, 如果rows内的filter还要,则需要与rows内的filter进行合并
serverEvn:[] //选配, 嵌套操的又一个save-request操作
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 删除操作格式
删除操作格式:
{
action: "del", //必配, 操作类型:删除
rows:[ //必配, 可能删除多行
{
keyVal: "111", //选配, 主键字段的值,如果不配置,则必须配置filter条件来确定数据行
filter:[], //选配, 查询条件, 与上一层的filter条件合并来进行删除操作
serverEvn:[] //选配, 嵌套操的又一个save-request操作
}
],
filter: [], //选配, 查询条件, 如果rows内的filter还要,则需要与rows内的filter进行合并
serverEvn:[] //选配, 嵌套操的又一个save-request操作
}
2
3
4
5
6
7
8
9
10
11
12
# 例1: 配置head
# 例1.1: 配置模块
配置模块后,系统会检查该模块是否存在,如果存在并且该模块设置了主表,则使用该模块下的主表进行操作。例如访问user模块下的主表,则配置的head结构体为:
head:{
module: 'user' /* user模块编号 */
}
2
3
TIP
说明:由于默认访问关系数据库,因此省略dbType参数,由于只操作user模块的主表因此省略source、view和table。
# 例1.2: 配置表
如果访问模块下的主表,则不用配置table,如果该模块还有多个子表,可指明访问该模块下的哪个子表,例如访问user模块下的 member表,则配置的head结构体为:
head:{
module: 'user', /* user模块编号 */
table: 'member' /* user模块下的子表名 */
}
2
3
4
TIP
说明:由于默认访问关系数据库,因此省略dbType参数。
# 例1.3: 配置自定义SQL数据源
针对自定义的SQL语句,系统支持对自定义SQL设置编号,在此配置自定义SQL的编号
head:{
source: 'sql_user' /* 使用后端定义的编号为sql_user的数据源 */
}
2
3
TIP
说明:由于默认访问关系数据库,因此省略dbType参数。
# 例2: 配置插入一条记录
将字段uid值为1,字段uname值为'zs'插入到user模块下的member表中
[{
head: {
module: 'user', /* user模块编号 */
table: 'member' /* user模块下的子表名 */
},
data: [
{
action: "add", //必配, 操作类型:插入
option: { //选配
keyVal: false //选配, 是否在新增数据后返回新增数据的主键值
},
rows: [ //必配, 可能插入多行
{
row: { //必配, 新增一行的数据
uid: 1, //uid字段及值
uname: 'zs' //uname字段及值
}
}
]
}
]
}]
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
等同于下面QL:
INSERT INTO member(uid, uname) VALUE (1, 'zs');
# 例2: 配置插入两条记录
将字段uid值为1,字段uname值为'zs',字段uid值为2,字段uname值为'ls'这两条记录插入到user模块下的member表中
[{
head: {
module: 'user', /* user模块编号 */
table: 'member' /* user模块下的子表名 */
},
data: [
{
action: "add", //必配, 操作类型:插入
option: { //选配
keyVal: false //选配, 是否在新增数据后返回新增数据的主键值
},
rows: [ //必配, 可能插入多行
{
row: { //必配, 新增一行的数据
uid: 1, //uid字段及值
uname: 'zs' //uname字段及值
}
},
{
row: { //必配, 新增一行的数据
uid: 2, //uid字段及值
uname: 'ls' //uname字段及值
}
}
]
}
]
}]
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
等同于下面QL:
INSERT INTO member(uid, uname) VALUE (1, 'zs');
INSERT INTO member(uid, uname) VALUE (2, 'ls');
2
# 例3: 配置修改一条记录
注意:不用写主键字段的实际字段名称,使用keyVal代表主键字段的值,后台自己知道主键字段是哪个,会自动代替keyVal为实际主键字段。 将user模块下的member表中主键字段值为"111"的记录修改w1字段值为"12",w2字段值为"1"
[{
head: {
module: 'user', /* user模块编号 */
table: 'member' /* user模块下的子表名 */
},
data: [
{
action: "edit", //必配, 操作类型:修改
rows: [
{
keyVal: "111", //选配, 主键字段的值,如果不配置,则必须配置filter条件来确定数据行
row: { //必配, 编辑一行的新数据
w1: "12", //w1字段的值
w2: "1", //w2字段的值
}
}
]
}
]
}]
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
等同于下面QL:
UPDATE member SET w1='12', w2 = '1' WHERE 主键字段 = '111';
# 例4: 配置删除一条记录
注意:不用写主键字段的实际字段名称,使用keyVal代表主键字段的值,后台自己知道主键字段是哪个,会自动代替keyVal为实际主键字段。 将user模块下的member表中主键字段值为"111"的记录删除
[{
head: {
module: 'user' /* user模块编号 */
table: 'member' /* user模块下的子表名 */
},
data: [
{
action: "del", //必配, 操作类型:删除
rows:[
{
keyVal: "111"
}
]
}
]
}]
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
等同于下面QL:
DELETE FROM member WHERE 主键字段 = '111';