| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -155,6 +155,7 @@ public JSONObject setUserIdIn(List<Object> list) { | |||
| 155 | 155 | public static final String KEY_HAVING = "@having"; //聚合函数条件,一般和@group一起用 | |
| 156 | 156 | public static final String KEY_ORDER = "@order"; //排序方式 | |
| 157 | 157 | public static final String KEY_JSON = "@json"; //SQL Server 把字段转为 JSON 输出 | |
| 158 | + public static final String KEY_RAW = "@raw"; //自定义where条件拼接 | ||
| 158 | 159 | ||
| 159 | 160 | public static final List<String> TABLE_KEY_LIST; | |
| 160 | 161 | static { | |
@@ -171,6 +172,7 @@ public JSONObject setUserIdIn(List<Object> list) { | |||
| 171 | 172 | TABLE_KEY_LIST.add(KEY_HAVING); | |
| 172 | 173 | TABLE_KEY_LIST.add(KEY_ORDER); | |
| 173 | 174 | TABLE_KEY_LIST.add(KEY_JSON); | |
| 175 | + TABLE_KEY_LIST.add(KEY_RAW); | ||
| 174 | 176 | } | |
| 175 | 177 | ||
| 176 | 178 | //@key关键字都放这个类 >>>>>>>>>>>>>>>>>>>>>> | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -86,6 +86,8 @@ public abstract class AbstractSQLConfig implements SQLConfig { | |||
| 86 | 86 | */ | |
| 87 | 87 | public static final Map<String, String> TABLE_KEY_MAP; | |
| 88 | 88 | public static final List<String> DATABASE_LIST; | |
| 89 | + // 自定义where条件拼接 | ||
| 90 | + public static final Map<String, String> RAW_MAP; | ||
| 89 | 91 | static { | |
| 90 | 92 | TABLE_KEY_MAP = new HashMap<String, String>(); | |
| 91 | 93 | TABLE_KEY_MAP.put(Table.class.getSimpleName(), Table.TABLE_NAME); | |
@@ -101,6 +103,8 @@ public abstract class AbstractSQLConfig implements SQLConfig { | |||
| 101 | 103 | DATABASE_LIST.add(DATABASE_POSTGRESQL); | |
| 102 | 104 | DATABASE_LIST.add(DATABASE_SQLSERVER); | |
| 103 | 105 | DATABASE_LIST.add(DATABASE_ORACLE); | |
| 106 | + | ||
| 107 | + RAW_MAP = new HashMap<>(); | ||
| 104 | 108 | } | |
| 105 | 109 | ||
| 106 | 110 | @Override | |
@@ -1442,7 +1446,10 @@ private String getWhereItem(String key, Object value | |||
| 1442 | 1446 | , RequestMethod method, boolean verifyName) throws Exception { | |
| 1443 | 1447 | Log.d(TAG, "getWhereItem key = " + key); | |
| 1444 | 1448 | //避免筛选到全部 value = key == null ? null : where.get(key); | |
| 1445 | - if (key == null || value == null || key.startsWith("@") || key.endsWith("()")) {//关键字||方法, +或-直接报错 | ||
| 1449 | + if(key.equals("@raw")){ | ||
| 1450 | + Log.d(TAG, "getWhereItem key startsWith @ = @raw "); | ||
| 1451 | + // 自定义where条件拼接,直接通过,放行 | ||
| 1452 | + }else if (key == null || value == null || key.startsWith("@") || key.endsWith("()")) {//关键字||方法, +或-直接报错 | ||
| 1446 | 1453 | Log.d(TAG, "getWhereItem key == null || value == null" | |
| 1447 | 1454 | + " || key.startsWith(@) || key.endsWith(()) >> continue;"); | |
| 1448 | 1455 | return null; | |
@@ -1483,7 +1490,9 @@ else if (key.endsWith(">")) { | |||
| 1483 | 1490 | else if (key.endsWith("<")) { | |
| 1484 | 1491 | keyType = 10; | |
| 1485 | 1492 | } | |
| 1486 | - else { //else绝对不能省,避免再次踩坑! keyType = 0; 写在for循环外面都没注意! | ||
| 1493 | + else if (key.startsWith("@")) { | ||
| 1494 | + keyType = 11; | ||
| 1495 | + } else { //else绝对不能省,避免再次踩坑! keyType = 0; 写在for循环外面都没注意! | ||
| 1487 | 1496 | keyType = 0; | |
| 1488 | 1497 | } | |
| 1489 | 1498 | key = getRealKey(method, key, false, true, verifyName, getQuote()); | |
@@ -1510,11 +1519,31 @@ else if (key.endsWith("<")) { | |||
| 1510 | 1519 | return getCompareString(key, value, ">"); | |
| 1511 | 1520 | case 10: | |
| 1512 | 1521 | return getCompareString(key, value, "<"); | |
| 1522 | + case 11: | ||
| 1523 | + return getRaw(key,value); | ||
| 1513 | 1524 | default: //TODO MySQL JSON类型的字段对比 key='[]' 会无结果! key LIKE '[1, 2, 3]' //TODO MySQL , 后面有空格! | |
| 1514 | 1525 | return getEqualString(key, value); | |
| 1515 | 1526 | } | |
| 1516 | 1527 | } | |
| 1517 | 1528 | ||
| 1529 | + @JSONField(serialize = false) | ||
| 1530 | + public String getRaw(String key, Object value) throws Exception { | ||
| 1531 | + if (JSON.isBooleanOrNumberOrString(value) == false && value instanceof Subquery == false) { | ||
| 1532 | + throw new IllegalArgumentException(key + ":value 中value不合法!非PUT请求只支持 [Boolean, Number, String] 内的类型 !"); | ||
| 1533 | + } | ||
| 1534 | + | ||
| 1535 | + String[] rawList = ((String)value).split(","); | ||
| 1536 | + String whereItem = ""; | ||
| 1537 | + for (int i = 0; i < rawList.length; i++) { | ||
| 1538 | + if(rawList.length>1&& i!=0){ | ||
| 1539 | + whereItem += " and " + RAW_MAP.get(rawList[i]); | ||
| 1540 | + }else{ | ||
| 1541 | + whereItem += RAW_MAP.get(rawList[i]); | ||
| 1542 | + } | ||
| 1543 | + } | ||
| 1544 | + | ||
| 1545 | + return whereItem; | ||
| 1546 | + } | ||
| 1518 | 1547 | ||
| 1519 | 1548 | @JSONField(serialize = false) | |
| 1520 | 1549 | public String getEqualString(String key, Object value) throws Exception { | |
| Back | FazBrowse Home | New Git URL |
0 commit comments