Skip to content

Commit bbde65f

Browse files
committed
Sever:ORM新增 >,<,>=,<= 比较运算
1 parent 535aed3 commit bbde65f

File tree

1 file changed

+45
-1
lines changed

1 file changed

+45
-1
lines changed

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

Lines changed: 45 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1134,6 +1134,18 @@ else if (key.endsWith("}{")) {
11341134
else if (key.endsWith("<>")) {
11351135
keyType = 6;
11361136
}
1137+
else if (key.endsWith(">=")) {
1138+
keyType = 7;
1139+
}
1140+
else if (key.endsWith("<=")) {
1141+
keyType = 8;
1142+
}
1143+
else if (key.endsWith(">")) {
1144+
keyType = 9;
1145+
}
1146+
else if (key.endsWith("<")) {
1147+
keyType = 10;
1148+
}
11371149
else { //else绝对不能省,避免再次踩坑! keyType = 0; 写在for循环外面都没注意!
11381150
keyType = 0;
11391151
}
@@ -1153,6 +1165,14 @@ else if (key.endsWith("<>")) {
11531165
return getExistsString(key, value);
11541166
case 6:
11551167
return getContainString(key, value);
1168+
case 7:
1169+
return getCompareString(key, value, ">=");
1170+
case 8:
1171+
return getCompareString(key, value, "<=");
1172+
case 9:
1173+
return getCompareString(key, value, ">");
1174+
case 10:
1175+
return getCompareString(key, value, "<");
11561176
default: //TODO MySQL JSON类型的字段对比 key='[]' 会无结果! key LIKE '[1, 2, 3]' //TODO MySQL , 后面有空格!
11571177
return getEqualString(key, value);
11581178
}
@@ -1161,7 +1181,7 @@ else if (key.endsWith("<>")) {
11611181

11621182
@JSONField(serialize = false)
11631183
public String getEqualString(String key, Object value) throws Exception {
1164-
if (value instanceof Collection<?>) {
1184+
if (JSON.isBooleanOrNumberOrString(value) == false && value instanceof Subquery == false) {
11651185
throw new IllegalArgumentException(key + ":value 中value不合法!非PUT请求只支持 [Boolean, Number, String] 内的类型 !");
11661186
}
11671187

@@ -1176,6 +1196,18 @@ public String getEqualString(String key, Object value) throws Exception {
11761196
return getKey(key) + (not ? "!=" : "=") + (value instanceof Subquery ? getSubqueryString((Subquery) value) : getValue(value));
11771197
}
11781198

1199+
@JSONField(serialize = false)
1200+
public String getCompareString(String key, Object value, String type) throws Exception {
1201+
if (JSON.isBooleanOrNumberOrString(value) == false && value instanceof Subquery == false) {
1202+
throw new IllegalArgumentException(key + type + ":value 中value不合法!比较运算 [>, <, >=, <=] 只支持 [Boolean, Number, String] 内的类型 !");
1203+
}
1204+
if (StringUtil.isName(key) == false) {
1205+
throw new IllegalArgumentException(key + type + ":value 中key不合法!比较运算 [>, <, >=, <=] 不支持 [&, !, |] 中任何逻辑运算符 !");
1206+
}
1207+
1208+
return getKey(key) + type + (value instanceof Subquery ? getSubqueryString((Subquery) value) : getValue(value));
1209+
}
1210+
11791211
public String getKey(String key) {
11801212
String q = getQuote();
11811213
return (isKeyPrefix() ? getAlias() + "." : "") + q + key + q;
@@ -2275,6 +2307,18 @@ else if (key.endsWith("()")) {//方法,查询完后处理,先用一个Map<ke
22752307
else if (key.endsWith("@")) {//引用,引用对象查询完后处理。fillTarget中暂时不用处理,因为非GET请求都是由给定的id确定,不需要引用
22762308
key = key.substring(0, key.length() - 1);
22772309
}
2310+
else if (key.endsWith(">=")) {//比较。查询时处理
2311+
key = key.substring(0, key.length() - 2);
2312+
}
2313+
else if (key.endsWith("<=")) {//比较。查询时处理
2314+
key = key.substring(0, key.length() - 2);
2315+
}
2316+
else if (key.endsWith(">")) {//比较。查询时处理
2317+
key = key.substring(0, key.length() - 1);
2318+
}
2319+
else if (key.endsWith("<")) {//比较。查询时处理
2320+
key = key.substring(0, key.length() - 1);
2321+
}
22782322
else if (key.endsWith("+")) {//延长,PUT查询时处理
22792323
if (method == PUT) {//不为PUT就抛异常
22802324
key = key.substring(0, key.length() - 1);

0 commit comments

Comments
 (0)