Skip to content

Commit 9776408

Browse files
committed
@having 支持复杂条件组合,且新增 @having& 简化 AND 连接的写法
1 parent a3d9c90 commit 9776408

4 files changed

Lines changed: 468 additions & 308 deletions

File tree

APIJSONORM/src/main/java/apijson/JSONObject.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,7 @@ public JSONObject setUserIdIn(List<Object> list) {
147147
public static final String KEY_COMBINE = "@combine"; //条件组合,每个条件key前面可以放&,|,!逻辑关系 "id!{},&sex,!name&$"
148148
public static final String KEY_GROUP = "@group"; //分组方式
149149
public static final String KEY_HAVING = "@having"; //聚合函数条件,一般和@group一起用
150+
public static final String KEY_HAVING_AND = "@having&"; //聚合函数条件,一般和@group一起用
150151
public static final String KEY_ORDER = "@order"; //排序方式
151152
public static final String KEY_RAW = "@raw"; // 自定义原始 SQL 片段
152153
public static final String KEY_JSON = "@json"; //SQL Server 把字段转为 JSON 输出
@@ -167,6 +168,7 @@ public JSONObject setUserIdIn(List<Object> list) {
167168
TABLE_KEY_LIST.add(KEY_COMBINE);
168169
TABLE_KEY_LIST.add(KEY_GROUP);
169170
TABLE_KEY_LIST.add(KEY_HAVING);
171+
TABLE_KEY_LIST.add(KEY_HAVING_AND);
170172
TABLE_KEY_LIST.add(KEY_ORDER);
171173
TABLE_KEY_LIST.add(KEY_RAW);
172174
TABLE_KEY_LIST.add(KEY_JSON);
@@ -350,7 +352,14 @@ public JSONObject setHaving(String... keys) {
350352
* @return
351353
*/
352354
public JSONObject setHaving(String keys) {
353-
return puts(KEY_HAVING, keys);
355+
return setHaving(keys, false);
356+
}
357+
/**set keys for having
358+
* @param keys "key0,key1,key2..."
359+
* @return
360+
*/
361+
public JSONObject setHaving(String keys, boolean isAnd) {
362+
return puts(isAnd ? KEY_HAVING_AND : KEY_HAVING, keys);
354363
}
355364

356365
/**set keys for order by

APIJSONORM/src/main/java/apijson/orm/AbstractParser.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1063,13 +1063,13 @@ public JSONObject onObjectParse(final JSONObject request
10631063
boolean isExplain = cfg.isExplain();
10641064
cfg.setExplain(false);
10651065

1066-
Subquery subq = new Subquery();
1067-
subq.setFrom(cfg.getTable());
1068-
subq.setConfig(cfg);
1066+
Subquery subqy = new Subquery();
1067+
subqy.setFrom(cfg.getTable());
1068+
subqy.setConfig(cfg);
10691069

10701070
SQLConfig countSQLCfg = createSQLConfig();
10711071
countSQLCfg.setColumn(Arrays.asList("count(*):count"));
1072-
countSQLCfg.setFrom(subq);
1072+
countSQLCfg.setFrom(subqy);
10731073

10741074
rp = executeSQL(countSQLCfg, false);
10751075

@@ -1358,6 +1358,7 @@ else if (childKeys.length == 1 && JSONRequest.isTableKey(childKeys[0])) { //
13581358
JOIN_COPY_KEY_LIST.add(JSONRequest.KEY_COMBINE);
13591359
JOIN_COPY_KEY_LIST.add(JSONRequest.KEY_GROUP);
13601360
JOIN_COPY_KEY_LIST.add(JSONRequest.KEY_HAVING);
1361+
JOIN_COPY_KEY_LIST.add(JSONRequest.KEY_HAVING_AND);
13611362
JOIN_COPY_KEY_LIST.add(JSONRequest.KEY_ORDER);
13621363
JOIN_COPY_KEY_LIST.add(JSONRequest.KEY_RAW);
13631364
}

0 commit comments

Comments
 (0)