From 6796698143b56f9cdf3ba1d6ade1707d92b1a2c7 Mon Sep 17 00:00:00 2001 From: Sea Date: Wed, 16 Jan 2019 18:31:17 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E4=BF=AE=E5=A4=8Djoin=E7=9A=84=E9=83=A8?= =?UTF-8?q?=E5=88=86BUG?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 59 +++++++++++++++++- .../biao/apijson/parser/APIJSONProvider.java | 41 +++++++++++- .../java/zuo/biao/apijson/parser/App.java | 18 ++++-- .../APIJSONParser/pom.properties | 2 +- .../biao/apijson/parser/APIJSONProvider.class | Bin 21195 -> 22286 bytes .../classes/zuo/biao/apijson/parser/App.class | Bin 2083 -> 2255 bytes 6 files changed, 109 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 1348e2b..90005e2 100644 --- a/README.md +++ b/README.md @@ -314,7 +314,7 @@ WHERE ( regexp_like(p.code,'^[0-9]+$')) 结果: -```json +```sql SELECT p.id, p.code, p.name, p.price FROM Product p WHERE (p.name LIKE '%双11%') @@ -350,21 +350,74 @@ GROUP BY p.name 目前允许的函数没有进行控制,所有的单一参数的函数都可以使用。 +单表查询的内容基本介绍完了,接下来是多表查询。 +现在有两张表,零售表`m_retail`,零售的店铺`m_retail.c_store_id`外键关联到`c_store`表。 +第一种是使用`id@` +```json +{ + "m_retail:r":{ + "@column":"id,docno", + "id": 18 + }, + "c_store:s":{ + "id@":"/r/c_store_id", + "@column":"code,name" + } +} +``` -单表查询的内容基本介绍完了。 +结果: -接下来是多表查询,后续文档内容敬请期待。 +```sql +SELECT r.id, r.docno, s.code as "s.code", s.name as "s.name" +FROM m_retail r, c_store s +WHERE (r.id = 18 AND r.c_store_id = s.id) +``` +如果不使用`id@` +```json +{ + "[]": { + "c_store": { + "@column": "code,name", + "code": "C86L" + }, + "m_retail:r": { + "@column": "id,docno" + } + }, + "join": { + "@innerJoin": [ + "c_store.id=r.c_store_id" + ] + } +} +``` + +结果: +```sql +SELECT r.id, r.docno, c_store.code, c_store.name +FROM m_retail r +INNER JOIN c_store ON c_store.id=r.c_store_id +WHERE (c_store.code = 'C86L') +``` +其他几种join的使用方法和这里演示的innerJoin是一样的。 +现在支持的join有: +@innerJoin +@leftOuterJoin +@rightOuterJoin +@join +@outerJoin diff --git a/src/main/java/zuo/biao/apijson/parser/APIJSONProvider.java b/src/main/java/zuo/biao/apijson/parser/APIJSONProvider.java index 83ed32e..dd55655 100644 --- a/src/main/java/zuo/biao/apijson/parser/APIJSONProvider.java +++ b/src/main/java/zuo/biao/apijson/parser/APIJSONProvider.java @@ -12,6 +12,8 @@ public class APIJSONProvider extends AbstractProvider { private final String ALIAS_SPLIT = ":"; private static final String AND = " AND "; private static final String OR = " OR "; + private final String q = "\""; + private boolean isWrap = false; private List tableWhiteList = new ArrayList(); private List tableBlackList = new ArrayList(); @@ -61,7 +63,7 @@ public List getTables() { Set tableNames = request.keySet(); String tableAliasName; String tableRealName; - for(String tableName : tableNames) { + out:for(String tableName : tableNames) { if(!tableName.matches("(\\w+(:\\w+)?)")) { error("表" + tableName + "格式不符合" ); return null; @@ -74,6 +76,19 @@ public List getTables() { }else { tableRealName = tableAliasName = tableName; } + if(join != null) { + String[] checkJoin = {"@innerJoin","@leftOuterJoin","@rightOuterJoin","@join","@outerJoin"}; + for(String joinKey : checkJoin) { + JSONArray array = join.getJSONArray(joinKey); + if(array != null && array.size() != 0) { + for(Object obj : array) { + if(obj instanceof String && (((String)obj).startsWith(tableRealName) || ((String)obj).startsWith(tableAliasName))) { + continue out; + } + } + } + } + } validateTable(tableRealName); list.add(tableRealName + " " + tableAliasName); } @@ -151,18 +166,27 @@ public List getSelect() { String columnRealName = functionStrs[1]; String columnAliasName = columnName.split(ALIAS_SPLIT)[1]; validateColumn(tableRealName,columnRealName); + if(propertis.getString("id@") != null) + columnAliasName = wrapColumn(tableAliasName, columnAliasName); list.add(funcitonName + "(" + tableAliasName + "." + columnRealName + ")" + " as " + columnAliasName); }else { //没函数的字段 String columnRealName = functionOrColumn ; String columnAliasName = columnName.split(ALIAS_SPLIT)[1]; validateColumn(tableRealName,columnRealName); + if(propertis.getString("id@") != null) + columnAliasName = wrapColumn(tableAliasName, columnAliasName); list.add(tableAliasName + "." + columnRealName + " as " + columnAliasName); } }else { //使用tableAliasName.columnName类型 validateColumn(tableRealName,columnName); - list.add(tableAliasName + "." + columnName); + if(propertis.getString("id@") != null) { + String columnAliasName = wrapColumn(tableAliasName, columnName); + list.add(tableAliasName + "." + columnName + " as " + columnAliasName); + }else { + list.add(tableAliasName + "." + columnName); + } } } } @@ -171,6 +195,9 @@ public List getSelect() { } return list; } + private String wrapColumn(String tableAliasName, String columnAliasName) { + return isWrap? q + tableAliasName + "." + columnAliasName + q : q + columnAliasName + q; + } /** * 解析请求中的过滤条件 * 支持以下模式: @@ -520,7 +547,7 @@ public List getOuterJoin() { List list = new ArrayList<>(); if(getStatementType() == StatementType.SELECT) { if(join != null && join.get("@outerJoin")!=null) { - JSONArray stms = join.getJSONArray("@join"); + JSONArray stms = join.getJSONArray("@outerJoin"); for(int i = 0; i < stms.size(); i++) { Object obj = stms.get(i); @@ -872,4 +899,12 @@ public List getColumnBlackList() { public void setColumnBlackList(List columnBlackList) { this.columnBlackList = columnBlackList; } + public boolean isWrap() { + return isWrap; + } + public void setWrap(boolean isWrap) { + this.isWrap = isWrap; + } + + } diff --git a/src/main/java/zuo/biao/apijson/parser/App.java b/src/main/java/zuo/biao/apijson/parser/App.java index 06c74db..c45c8e7 100644 --- a/src/main/java/zuo/biao/apijson/parser/App.java +++ b/src/main/java/zuo/biao/apijson/parser/App.java @@ -14,12 +14,22 @@ public static void main( String[] args ) throws SQLProviderException { long st = System.currentTimeMillis(); String json = "{\r\n" + - " \"Product:p\":{\r\n" + - " \"@column\":\"name,max(price):max_price\",\r\n" + - " \"name~\": \"双11\",\r\n" + - " \"@group\": \"name\"\r\n" + + " \"[]\": {\r\n" + + " \"c_store\": {\r\n" + + " \"@column\": \"code,name\",\r\n" + + " \"code\": \"C86L\"\r\n" + + " },\r\n" + + " \"m_retail:r\": {\r\n" + + " \"@column\": \"id,docno\"\r\n" + + " }\r\n" + + " },\r\n" + + " \"join\": {\r\n" + + " \"@innerJoin\": [\r\n" + + " \"c_store.id=r.c_store_id\"\r\n" + + " ]\r\n" + " }\r\n" + "}"; + System.out.println(json); JSONObject req = JSONObject.parseObject(json); long fastJsonet = System.currentTimeMillis(); //JSON解析太耗时了174ms diff --git a/target/classes/META-INF/maven/APIJSONParser/APIJSONParser/pom.properties b/target/classes/META-INF/maven/APIJSONParser/APIJSONParser/pom.properties index b28d1ab..646310f 100644 --- a/target/classes/META-INF/maven/APIJSONParser/APIJSONParser/pom.properties +++ b/target/classes/META-INF/maven/APIJSONParser/APIJSONParser/pom.properties @@ -1,5 +1,5 @@ #Generated by Maven Integration for Eclipse -#Tue Dec 25 10:09:51 CST 2018 +#Wed Jan 16 11:59:18 CST 2019 version=0.0.1-SNAPSHOT groupId=APIJSONParser m2e.projectName=APIJSONParser diff --git a/target/classes/zuo/biao/apijson/parser/APIJSONProvider.class b/target/classes/zuo/biao/apijson/parser/APIJSONProvider.class index 63452963f6b250840ae48242a48c74604dcf9828..417bd28b848d99338ef4fdd38eb4985dfc4c1913 100644 GIT binary patch literal 22286 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�c6!z8Jxfj?XFf z|42GS9N}bA1j!4W^q+synsCYFjR1LOe@c0KF;d>ZVeJmu`(g6N+gH(^pu91@1vNiG z4*12mO@ljT`UN#yCR*w;8|U$b8Tx6ysP{Wo-l1PsTPbLg*Va5C zDA)A9Q5)0 zo(!Ds7dlrvT2upAmA9n~WSv~DpTa>{dSG zIVPJFi;JKP!R&xocmiTE&JYVe#}Erv0%Gx3T`caUJ<^KNLbV-Xm#a9iF{~KThan&v ze~CR|V&nlp*f|OjBxKUhkq`xLO@Bn4#WnaxV1ih%RlJr#k%ROMv}j;l95b}$U!Y~vBnCgyUkAHbI?9F$f7n#_9Tm`7j-iArhcX*8e&SO$)*!{WUAF45B z(qdCzsxu*?kMs)D0D8$ZNP=g8wjMfourd-TI6|fu`5!PI6r86g@h8%ZSd5cOEhQrO z1!NT$JvF;P+)mf_!4}GD9`-ZewXc&MOhUq0C+&Ux0#~>wB;`xBwE?aQY z*#BNZZz;QJmU!p`Ow-c(07+p3SezUK`e+5q^jm5tiYnk((q= zaPgfUCL-|DOMG#nP!4{rqR=!!uAMlwLIr*8m_I}OR{yMq56dr%#v+fvELp{8LA`<> z0mXBgJ(rskKh9ivFFjA8uNu3&%)Xz^&YEmSr zmx0vFTOn2ZBrBBE4mzn{oRrj*NK&tiO6r#v&$Jk-G2X?wkKh0N&$;)m`@bIel;SE}__@y= zqM>H8sutSa)DH@|C#xmP`17<*5{1&z)8!%&wNTQHSTVnBsIi8RBXCBYIEvZH@szs9 z%1t_TxstPt)x5c+S^qC%>M^}kD3+Ry8lJ!X)WwqNbkux?Df#-&$-@+ zWyDQ=#)|J=HfQQhC9=CEeD1Q0LpbKeadfgTu24$|s)R1qDs;HI5oS>#EcYTJp^rn5 zy%&R`7g3ye&0i2=9QxM$3Nv{BzJA2L5HZNgd{iFBsDu#?J!}3B_LKKf%1Ml|Z~PeP zCcK!$Dc0sn3R4`qNpj@+LTc{W$`bvE<%WhC$LTbONF+sc?T5!V6}{5gO*n0DyB6zB`IzjXDHE8duVTCmSPQa>A-vy7u&?3 zVdHY(s*MF3H%Qo^m2}{igFS81KY2QkuH(P6x2R@(M5lyLO~dv z=%Ih;#V`gjjUmj_DuoeT!zfnhxnJV(7(UWdd&uH8WQv=}&$01 delta 672 zcmY+B%W4yG6vn?vCY{b?V$)PG7d4Y<(k5+c5;dkyn;26AUP6rol;EX~Nvud;z!O3%JsaXHqxL;^RBF-#Pr}+vt|_LxI`A(?@s zf4q8`Nc>mIF6+$>;iUmeHit$fsp}BB0*>N1hhq%<#-`P86XAzs9I{?yWd@Tyr^j8q zbh&hOk#1bmsx@6e06`Hpgp3!~2tSDkhcJUs&*?Tq)I zWemXqV0#Z^S(j&VW)D7vr66T9h1*A<>|u8?uJ9gy2NQin_Yp69_+6Y-gdHS3LLX=Q zNSobuiu+g~HNJ3OHf@^kobSN=;k+B^kF?4Hfi!~=(h;z5g2NFy!VMR^B=QL33L?-b`yA7FM~`Ty>097Qw{epkh_r> Date: Thu, 14 Feb 2019 10:03:43 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=E4=BF=AE=E5=A4=8DMysql=E6=97=A0=E6=B3=95?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=88=A0=E9=99=A4=E7=9A=84BUG=EF=BC=8C?= =?UTF-8?q?=E5=AE=8C=E5=96=84README?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 119 ++++++++++++++++-- pom.xml | 49 ++++++++ .../biao/apijson/parser/APIJSONProvider.java | 6 +- .../APIJSONParser/pom.properties | 2 +- .../maven/APIJSONParser/APIJSONParser/pom.xml | 49 ++++++++ .../biao/apijson/parser/APIJSONProvider.class | Bin 22286 -> 22321 bytes 6 files changed, 215 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 90005e2..d4b910f 100644 --- a/README.md +++ b/README.md @@ -428,32 +428,135 @@ WHERE (c_store.code = 'C86L') ## 速查 +> 速查中的示例,都是最简单的实例,更新,删除的功能中的过滤条件的使用和查询相同,具体使用参考上述说明 + + + +一个叫`test_apijson`的表 + + + +| ID | CODE | NAME | +| ---- | ---- | ------ | +| 1 | A001 | 浦东区 | +| 2 | B001 | 徐汇区 | +| 3 | C001 | 普陀区 | + + + ### 查询 -#### 别名 +**请求地址:**`http://localhost:8080/jtyd-admin/api/wxapp/apijson_query` + +查询`A001`的名称 + -表的别名 ```json { - "Table:t":{} + "test_apijson":{ + "@column":"name", + "code":"A001" + } } ``` -字段的别名 + + +### 新增 + +**请求地址:**`http://localhost:8080/jtyd-admin/api/wxapp/apijson_insert` + +新增一行如ID=1的数据 + + ```json { - "Table:t":{ - "@column":"columnName:columnAliasName,.." + "test_apijson":{ + "code":"A001", + "name":"浦东区" } } ``` -### 新增 +ID是自动增长的,所以不需要再给ID赋值。 ### 修改 -### 删除 \ No newline at end of file +**请求地址:**`http://localhost:8080/jtyd-admin/api/wxapp/apijson_update` + +修改代码`B001`为`A002` + + + +```json +{ + "test_apijson":{ + "@code":"A002", + "code": "B001" + } +} +``` + + + + + +### 删除 + +**请求地址:**`http://localhost:8080/jtyd-admin/api/wxapp/apijson_delete` + +删除`A002` + + + +```json +{ + "test_apijson":{ + "code": "A002" + } +} +``` + + + +## 权限 + +### 表权限 + +表白名单:`APIJSONProvider.getTableWhiteList()` + +表黑名单:`APIJSONProvider.getTableBlackList()` + +表的黑白名单的使用 + + + +```java +apijsonProvider.getTableBlackList().add("Retail"); +``` + +`Retail`是表名 + + + +### 字段权限 + +字段白名单:`APIJSONProvider.getColumnWhiteList()` + +字段黑名单:`APIJSONProvider.getColumnBlackList()` + +字段的黑白名单的使用 + + + +```java +apijsonProvider.getColumnWhiteList().add("retail.*"); +apijsonProvider.getColumnWhiteList().add("retail.amt"); +``` + +格式:`表名.字段名`,字段名支持通配符`*` + diff --git a/pom.xml b/pom.xml index e6ffde5..e9e316b 100644 --- a/pom.xml +++ b/pom.xml @@ -27,4 +27,53 @@ 1.2.21 + + + + org.apache.maven.plugins + maven-surefire-plugin + 2.21.0 + + true + + + + + maven-compiler-plugin + 2.3.2 + + 1.8 + 1.8 + UTF-8 + + ${project.basedir}/lib/ + + + + + + maven-assembly-plugin + + + jar-with-dependencies + + + + com.ctbri.echoRisk.ApplicationStart + + + + + + make-assembly + package + + single + + + + + + + diff --git a/src/main/java/zuo/biao/apijson/parser/APIJSONProvider.java b/src/main/java/zuo/biao/apijson/parser/APIJSONProvider.java index dd55655..14eefd2 100644 --- a/src/main/java/zuo/biao/apijson/parser/APIJSONProvider.java +++ b/src/main/java/zuo/biao/apijson/parser/APIJSONProvider.java @@ -90,7 +90,11 @@ public List getTables() { } } validateTable(tableRealName); - list.add(tableRealName + " " + tableAliasName); + if(getStatementType() == StatementType.SELECT) { + list.add(tableRealName + " " + tableAliasName); + }else { + list.add(tableRealName); + } } return list; } diff --git a/target/classes/META-INF/maven/APIJSONParser/APIJSONParser/pom.properties b/target/classes/META-INF/maven/APIJSONParser/APIJSONParser/pom.properties index 646310f..26916d5 100644 --- a/target/classes/META-INF/maven/APIJSONParser/APIJSONParser/pom.properties +++ b/target/classes/META-INF/maven/APIJSONParser/APIJSONParser/pom.properties @@ -1,5 +1,5 @@ #Generated by Maven Integration for Eclipse -#Wed Jan 16 11:59:18 CST 2019 +#Thu Feb 14 08:53:56 CST 2019 version=0.0.1-SNAPSHOT groupId=APIJSONParser m2e.projectName=APIJSONParser diff --git a/target/classes/META-INF/maven/APIJSONParser/APIJSONParser/pom.xml b/target/classes/META-INF/maven/APIJSONParser/APIJSONParser/pom.xml index e6ffde5..e9e316b 100644 --- a/target/classes/META-INF/maven/APIJSONParser/APIJSONParser/pom.xml +++ b/target/classes/META-INF/maven/APIJSONParser/APIJSONParser/pom.xml @@ -27,4 +27,53 @@ 1.2.21 + + + + org.apache.maven.plugins + maven-surefire-plugin + 2.21.0 + + true + + + + + maven-compiler-plugin + 2.3.2 + + 1.8 + 1.8 + UTF-8 + + ${project.basedir}/lib/ + + + + + + maven-assembly-plugin + + + jar-with-dependencies + + + + com.ctbri.echoRisk.ApplicationStart + + + + + + make-assembly + package + + single + + + + + + + diff --git a/target/classes/zuo/biao/apijson/parser/APIJSONProvider.class b/target/classes/zuo/biao/apijson/parser/APIJSONProvider.class index 417bd28b848d99338ef4fdd38eb4985dfc4c1913..0836ce997106a65b1e83ec82f796cb55d769dd86 100644 GIT binary patch delta 5849 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 delta 5623 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 From 91234ccaf968a443d625e0221bec9102969d8fe7 Mon Sep 17 00:00:00 2001 From: Sea Date: Thu, 14 Feb 2019 10:08:55 +0800 Subject: [PATCH 3/5] =?UTF-8?q?=E8=B0=83=E6=95=B4README?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/README.md b/README.md index d4b910f..861abaa 100644 --- a/README.md +++ b/README.md @@ -446,7 +446,6 @@ WHERE (c_store.code = 'C86L') ### 查询 -**请求地址:**`http://localhost:8080/jtyd-admin/api/wxapp/apijson_query` 查询`A001`的名称 @@ -465,7 +464,6 @@ WHERE (c_store.code = 'C86L') ### 新增 -**请求地址:**`http://localhost:8080/jtyd-admin/api/wxapp/apijson_insert` 新增一行如ID=1的数据 @@ -486,7 +484,6 @@ ID是自动增长的,所以不需要再给ID赋值。 ### 修改 -**请求地址:**`http://localhost:8080/jtyd-admin/api/wxapp/apijson_update` 修改代码`B001`为`A002` @@ -507,7 +504,6 @@ ID是自动增长的,所以不需要再给ID赋值。 ### 删除 -**请求地址:**`http://localhost:8080/jtyd-admin/api/wxapp/apijson_delete` 删除`A002` From 6510b82510dc1e8e10facca471f986a1bf9e3257 Mon Sep 17 00:00:00 2001 From: Zerounary <31512287+Zerounary@users.noreply.github.com> Date: Wed, 17 Jul 2019 13:52:14 +0800 Subject: [PATCH 4/5] Update APIJSONProvider.java MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修复IN使用中括号问题 --- src/main/java/zuo/biao/apijson/parser/APIJSONProvider.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/zuo/biao/apijson/parser/APIJSONProvider.java b/src/main/java/zuo/biao/apijson/parser/APIJSONProvider.java index 14eefd2..428f0dd 100644 --- a/src/main/java/zuo/biao/apijson/parser/APIJSONProvider.java +++ b/src/main/java/zuo/biao/apijson/parser/APIJSONProvider.java @@ -326,7 +326,7 @@ public List getWhere() { limit += "'" + ((String)obj).replaceAll("'", "''") + "'"; } } - list.add(tableAliasName + "." + columnName + " NOT IN [" + limit + "]" ); + list.add(tableAliasName + "." + columnName + " NOT IN (" + limit + ")" ); } }else { if(!array.isEmpty()) { @@ -344,7 +344,7 @@ public List getWhere() { limit += "'" + ((String)obj).replaceAll("'", "''") + "'"; } } - list.add(tableAliasName + "." + columnName + " IN [" + limit + "]" ); + list.add(tableAliasName + "." + columnName + " IN (" + limit + ")" ); } } } From fdc86e3818017edda1daa735b889009bcb4f1a37 Mon Sep 17 00:00:00 2001 From: Zerounary <31512287+Zerounary@users.noreply.github.com> Date: Wed, 17 Jul 2019 13:53:41 +0800 Subject: [PATCH 5/5] =?UTF-8?q?=E4=BF=AE=E5=A4=8DIN=E4=BD=BF=E7=94=A8?= =?UTF-8?q?=E4=B8=AD=E6=8B=AC=E5=8F=B7=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修复IN使用中括号问题 --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 861abaa..e5e4f55 100644 --- a/README.md +++ b/README.md @@ -195,7 +195,7 @@ WHERE (p.price > 300 OR p.price < 1200) ```sql SELECT p.id, p.code, p.name, p.price FROM Product p -WHERE (p.brand_id IN [1, 4, 5]) +WHERE (p.brand_id IN (1, 4, 5)) ``` @@ -218,7 +218,7 @@ WHERE (p.brand_id IN [1, 4, 5]) ```sql SELECT p.id, p.code, p.name, p.price FROM Product p -WHERE (p.brand_id NOT IN [1, 4, 5]) +WHERE (p.brand_id NOT IN (1, 4, 5)) ``` 此功能同样支持文本字段