@@ -406,7 +406,7 @@ DELETE: <br > 删除数据 | base_url/delete/ | {<br > TableName:{<
406406 查询数组 | "key[ ] ":{},后面是 JSONObject,key 可省略。当 key 和里面的 Table 名相同时,Table 会被提取出来,即 {Table:{Content}} 会被转化为 {Content} | [ {"User[ ] ":{"User":{}}}] ( http://apijson.cn:8080/get/{"User[]":{"count":3,"User":{}}} ) ,查询一个 User 数组。这里 key 和 Table 名都是 User,User 会被提取出来,即 {"User":{"id", ...}} 会被转化为 {"id", ...},如果要进一步提取 User 中的 id,可以把 User[ ] 改为 User-id[ ] ,其中 - 用来分隔路径中涉及的 key
407407 匹配选项范围 | "key{}":[ ] ,后面是 JSONArray,作为 key 可取的值的选项 | [ "id{}":[ 38710,82001,70793]] ( http://apijson.cn:8080/get/{"User[]":{"count":3,"User":{"id{}":[38710,82001,70793]}}} ) ,对应 SQL 是` id IN(38710,82001,70793) ` ,查询 id 符合 38710,82001,70793 中任意一个的一个 User 数组
408408 匹配条件范围 | "key{}":"条件0,条件1...",条件为 SQL 表达式字符串,可进行数字比较运算等 | [ "id{}":"<=80000,\> 90000"] ( http://apijson.cn:8080/get/{"User[]":{"count":3,"User":{"id{}":"<=80000,\> 90000"}}} ) ,对应 SQL 是` id<=80000 OR id>90000 ` ,查询 id 符合 id\< =80000 \| id>90000 的一个 User 数组
409- 包含选项范围 | "key<\> ": Object => "key<\> ":[ value] ,key 对应值的类型必须为 JSONArray,value 类型不能为 JSON | [ "contactIdList<\> ":38710] ( http://apijson.cn:8080/get/{"User[]":{"count":3,"User":{"contactIdList<\> ":38710}}} ) ,对应SQL是` json_contains(contactIdList,38710) ` ,查询 contactIdList 包含 38710 的一个 User 数组
409+ 包含选项范围 | "key<\> ": value => "key<\> ":[ value] ,key 对应值的类型必须为 JSONArray,value 值类型只能为 Boolean, Number, String 中的一种 | [ "contactIdList<\> ":38710] ( http://apijson.cn:8080/get/{"User[]":{"count":3,"User":{"contactIdList<\> ":38710}}} ) ,对应SQL是` json_contains(contactIdList,38710) ` ,查询 contactIdList 包含 38710 的一个 User 数组
410410 判断是否存在 | "key}{@":{<br />   ;  ; "from":"Table",<br />   ;  ; "Table":{ ... }<br />}<br />其中:<br />}{ 表示 EXISTS;<br /> key 用来标识是哪个判断;<br /> @ 后面是 子查询 对象,具体见下方 子查询 的说明。 | [ "id}{@":{<br />   ;  ; "from":"Comment",<br />   ;  ; "Comment":{<br />   ;  ;   ;  ; "momentId":15 <br />   ;  ; }<br />}] ( http://apijson.cn:8080/get/{"User":{"id}{@":{"from":"Comment","Comment":{"momentId":15}}}} ) <br /> WHERE EXISTS(SELECT * FROM Comment WHERE momentId=15)
411411 远程调用函数 | "key()":"函数表达式",函数表达式为 function(key0,key1...),会调用后端对应的函数 function(JSONObject request, String key0, String key1...),实现 参数校验、数值计算、数据同步、消息推送、字段拼接、结构变换 等特定的业务逻辑处理,<br >可使用 - 和 + 表示优先级,解析 key-() > 解析当前对象 > 解析 key() > 解析子对象 > 解析 key+() | [ "isPraised()":"isContain(praiseUserIdList,userId)"] ( http://apijson.cn:8080/get/{"Moment":{"id":301,"isPraised()":"isContain(praiseUserIdList,userId)"}} ) ,会调用远程函数 [ boolean isContain(JSONObject request, String array, String value)] ( https://github.com/APIJSON/apijson-framework/blob/master/src/main/java/apijson/framework/APIJSONFunctionParser.java#L361-L374 ) ,然后变为 "isPraised": true 这种(假设点赞用户 id 列表包含了 userId,即这个 User 点了赞)
412412 存储过程 | "@key ()":"SQL函数表达式",函数表达式为 <br /> function(key0,key1...) <br /> 会调用后端数据库对应的存储过程 SQL 函数 <br /> function(String key0, String key1...) <br /> 除了参数会提前赋值,其它和 远程函数 一致 | [ "@limit ":10, <br /> "@offset ":0, <br /> "@procedure ()":"getCommentByUserId(id,@limit ,@offset )"] ( http://apijson.cn:8080/get/{"User":{"@limit":10,"@offset":0,"@procedure()":"getCommentByUserId(id,@limit,@offset)"}} ) <br /> 会转为 <br /> ` getCommentByUserId(38710,10,0) ` <br /> 来调用存储过程 SQL 函数 <br /> ` getCommentByUserId(IN id bigint, IN limit int, IN offset int) ` <br /> 然后变为 <br />"procedure":{<br />   ;  ; "count":-1, <br />   ;  ; "update": false , <br />   ;  ; "list":[ ] <br /> } <br /> 其中 count 是指写操作影响记录行数,-1 表示不是写操作;update 是指是否为写操作(增删改);list 为返回结果集
0 commit comments