@@ -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