| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
3 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -73,6 +73,10 @@ public String getUserIdKey(String database, String schema, String table) { | |||
| 73 | 73 | // return null; // return null 则不生成 id,一般用于数据库自增 id | |
| 74 | 74 | // } | |
| 75 | 75 | }; | |
| 76 | + | ||
| 77 | + // 自定义where条件拼接 | ||
| 78 | + //RAW_MAP.put("commentWhereItem1","`Comment`.`userId` = 38710 and `Comment`.`momentId` = 470"); | ||
| 79 | + //RAW_MAP.put("commentWhereItem2","`Comment`.`toId` = 0"); | ||
| 76 | 80 | } | |
| 77 | 81 | ||
| 78 | 82 | ||
| 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 { | |
@@ -2041,7 +2070,7 @@ public String getSetString(RequestMethod method, Map<String, Object> content, bo | |||
| 2041 | 2070 | String quote = getQuote(); | |
| 2042 | 2071 | ||
| 2043 | 2072 | boolean isFirst = true; | |
| 2044 | - int keyType = 0;// 0 - =; 1 - +, 2 - - | ||
| 2073 | + int keyType;// 0 - =; 1 - +, 2 - - | ||
| 2045 | 2074 | Object value; | |
| 2046 | 2075 | ||
| 2047 | 2076 | String idKey = getIdKey(); | |
@@ -2055,6 +2084,8 @@ public String getSetString(RequestMethod method, Map<String, Object> content, bo | |||
| 2055 | 2084 | keyType = 1; | |
| 2056 | 2085 | } else if (key.endsWith("-")) { | |
| 2057 | 2086 | keyType = 2; | |
| 2087 | + } else { | ||
| 2088 | + keyType = 0; //注意重置类型,不然不该加减的字段会跟着加减 | ||
| 2058 | 2089 | } | |
| 2059 | 2090 | value = content.get(key); | |
| 2060 | 2091 | key = getRealKey(method, key, false, true, verifyName, quote); | |
| Back | FazBrowse Home | New Git URL |
0 commit comments