Skip to content

Commit 39a905b

Browse files
committed
Server:完成 @from@:{} 对应的 FROM 类型子查询
1 parent cbffc9b commit 39a905b

4 files changed

Lines changed: 33 additions & 20 deletions

File tree

APIJSON-Java-Server/APIJSONLibrary/src/main/java/zuo/biao/apijson/server/AbstractObjectParser.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -352,10 +352,11 @@ public boolean onParse(@NotNull String key, @NotNull Object value) throws Except
352352
SQLConfig cfg = arrObj == null ? null : (SQLConfig) arrObj.get(AbstractParser.KEY_CONFIG);
353353

354354
Subquery s = new Subquery();
355-
s.setPath(parentPath);
355+
s.setPath(path);
356356
s.setOriginKey(key);
357357
s.setOriginValue(subquery);
358358

359+
s.setFrom(from);
359360
s.setRange(range);
360361
s.setKey(replaceKey);
361362
s.setConfig(cfg);

APIJSON-Java-Server/APIJSONLibrary/src/main/java/zuo/biao/apijson/server/AbstractSQLConfig.java

Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import static zuo.biao.apijson.JSONObject.KEY_COLUMN;
1818
import static zuo.biao.apijson.JSONObject.KEY_COMBINE;
1919
import static zuo.biao.apijson.JSONObject.KEY_DATABASE;
20+
import static zuo.biao.apijson.JSONObject.KEY_FROM;
2021
import static zuo.biao.apijson.JSONObject.KEY_GROUP;
2122
import static zuo.biao.apijson.JSONObject.KEY_HAVING;
2223
import static zuo.biao.apijson.JSONObject.KEY_ID;
@@ -96,6 +97,7 @@ public abstract class AbstractSQLConfig implements SQLConfig {
9697
private String group; //分组方式的字符串数组,','分隔
9798
private String having; //聚合函数的字符串数组,','分隔
9899
private String order; //排序方式的字符串数组,','分隔
100+
private Subquery from; //子查询临时表
99101
private List<String> column; //表内字段名(或函数名,仅查询操作可用)的字符串数组,','分隔
100102
private List<List<Object>> values; //对应表内字段的值的字符串数组,','分隔
101103
private Map<String, Object> content; //Request内容,key:value形式,column = content.keySet(),values = content.values()
@@ -110,7 +112,6 @@ public abstract class AbstractSQLConfig implements SQLConfig {
110112
private int query; //JSONRequest.query
111113
private int type; //ObjectParser.type
112114
private List<Join> joinList; //连表 配置列表
113-
private List<Subquery> subqueryList; //子查询 配置列表
114115
//array item >>>>>>>>>>
115116
private boolean test; //测试
116117
private boolean cacheStatic; //静态缓存
@@ -454,6 +455,15 @@ public String getOrderString() {
454455
}
455456

456457

458+
@Override
459+
public Subquery getFrom() {
460+
return from;
461+
}
462+
@Override
463+
public AbstractSQLConfig setFrom(Subquery from) {
464+
this.from = from;
465+
return this;
466+
}
457467

458468
@Override
459469
public List<String> getColumn() {
@@ -745,18 +755,6 @@ public boolean hasJoin() {
745755
return joinList != null && joinList.isEmpty() == false;
746756
}
747757

748-
@Override
749-
public List<Subquery> getSubqueryList() {
750-
return subqueryList;
751-
}
752-
@Override
753-
public void setSubqueryList(List<Subquery> subqueryList) {
754-
this.subqueryList = subqueryList;
755-
}
756-
@Override
757-
public boolean hasSubquery() {
758-
return subqueryList != null && subqueryList.isEmpty() == false;
759-
}
760758

761759
@Override
762760
public boolean isTest() {
@@ -1688,6 +1686,11 @@ public static String getSQL(AbstractSQLConfig config) throws Exception {
16881686
private static String getConditionString(String column, String table, AbstractSQLConfig config) throws Exception {
16891687
String where = config.getWhereString(true);
16901688

1689+
Subquery from = config.getFrom();
1690+
if (from != null) {
1691+
table = config.getSubqueryString(from) + " AS " + config.getKey(from.getFrom()) + " "; //TODO Comment:c 转为 AS `Comment:c`
1692+
}
1693+
16911694
String condition = table + config.getJoinString() + where + (
16921695
RequestMethod.isGetMethod(config.getMethod(), true) == false ?
16931696
"" : config.getGroupString() + config.getHavingString() + config.getOrderString()
@@ -1866,6 +1869,7 @@ else if (id instanceof String) {
18661869
String database = request.getString(KEY_DATABASE);
18671870
String schema = request.getString(KEY_SCHEMA);
18681871
String combine = request.getString(KEY_COMBINE);
1872+
Subquery from = (Subquery) request.get(KEY_FROM);
18691873
String column = request.getString(KEY_COLUMN);
18701874
String group = request.getString(KEY_GROUP);
18711875
String having = request.getString(KEY_HAVING);
@@ -1879,6 +1883,7 @@ else if (id instanceof String) {
18791883
request.remove(KEY_DATABASE);
18801884
request.remove(KEY_SCHEMA);
18811885
request.remove(KEY_COMBINE);
1886+
request.remove(KEY_FROM);
18821887
request.remove(KEY_COLUMN);
18831888
request.remove(KEY_GROUP);
18841889
request.remove(KEY_HAVING);
@@ -2055,6 +2060,7 @@ else if (whereList != null && whereList.contains(key)) {
20552060
}
20562061
}
20572062

2063+
config.setFrom(from);
20582064
config.setColumn(cs);
20592065
config.setWhere(tableWhere);
20602066

@@ -2079,6 +2085,7 @@ else if (whereList != null && whereList.contains(key)) {
20792085
request.put(KEY_DATABASE, database);
20802086
request.put(KEY_SCHEMA, schema);
20812087
request.put(KEY_COMBINE, combine);
2088+
request.put(KEY_FROM, from);
20822089
request.put(KEY_COLUMN, column);
20832090
request.put(KEY_GROUP, group);
20842091
request.put(KEY_HAVING, having);

APIJSON-Java-Server/APIJSONLibrary/src/main/java/zuo/biao/apijson/server/SQLConfig.java

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,9 @@ public interface SQLConfig {
125125
String getOrder();
126126
SQLConfig setOrder(String order);
127127

128+
Subquery getFrom();
129+
SQLConfig setFrom(Subquery from);
130+
128131
List<String> getColumn();
129132
SQLConfig setColumn(List<String> column);
130133

@@ -195,12 +198,6 @@ public interface SQLConfig {
195198
boolean hasJoin();
196199

197200

198-
List<Subquery> getSubqueryList();
199-
200-
void setSubqueryList(List<Subquery> subqueryList);
201-
202-
boolean hasSubquery();
203-
204201
String getSubqueryString(Subquery subquery) throws Exception;
205202

206203
}

APIJSON-Java-Server/APIJSONLibrary/src/main/java/zuo/biao/apijson/server/Subquery.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ public class Subquery {
2525
private String originKey;
2626
private JSONObject originValue;
2727

28+
private String from; // any, all
2829
private String range; // any, all
2930
private String key; //id
3031
private SQLConfig config;
@@ -48,6 +49,13 @@ public JSONObject getOriginValue() {
4849
public void setOriginValue(JSONObject originValue) {
4950
this.originValue = originValue;
5051
}
52+
53+
public String getFrom() {
54+
return from;
55+
}
56+
public void setFrom(String from) {
57+
this.from = from;
58+
}
5159
public String getRange() {
5260
return range;
5361
}

0 commit comments

Comments
 (0)