Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 44 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,47 @@

详细文档,计划2019年1月1日左右更新

## 未来

1. 现在的程序是写死的,处理逻辑能以链的形式组合就好了

@pipe("name")

如果能够自动装配的话,最好有一个

2. 使用Mybatis别名的技巧来实现自动装配

```json
{
"T":{
"@column":"a,b,c"
},
"T2":{
"@parent":"T"
"@column":"d,e,f"
}
}
```

查询结果:

```json
{
"T":{
"a":"a",
"b":"b",
"c":"c",
"T2":{
"d":"d",
"e":"e",
"f":"f"
}
}
}
```

3. 表,字段的黑白名单放出来,作为

4. 权限的控制通过


275 changes: 206 additions & 69 deletions src/main/java/zuo/biao/apijson/parser/APIJSONProvider.java

Large diffs are not rendered by default.

21 changes: 16 additions & 5 deletions src/main/java/zuo/biao/apijson/parser/App.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package zuo.biao.apijson.parser;

import java.util.Set;

import com.alibaba.fastjson.JSONObject;

/**
Expand All @@ -12,18 +14,26 @@ public static void main( String[] args ) throws SQLProviderException
{
long st = System.currentTimeMillis();
String json = "{\r\n" +
" \"Retail\": {\r\n" +
" \"description\": \"20190101,元旦快乐\",\r\n" +
" \"INVOICE_ADDRESS\": 13,\r\n" +
" \"docno\": \"RE1807250000002\"\r\n" +
" }\r\n" +
" \"Retail\":{\r\n" +
" \"id\": 1,\r\n" +
" \"amt\": 1,\r\n" +
" \"@column\": \"id,cc\"\r\n" +
" }\r\n" +
"}";
JSONObject req = JSONObject.parseObject(json);
long fastJsonet = System.currentTimeMillis();
//JSON解析太耗时了174ms
long st2 = System.currentTimeMillis();
APIJSONProvider apijsonProvider = new APIJSONProvider(req);
apijsonProvider.setStatementType(StatementType.SELECT);
// apijsonProvider.getTableBlackList().add("Retail");
// apijsonProvider.getTableWhiteList().add("Retail");
// apijsonProvider.getTableWhiteList().add("StorE");
// apijsonProvider.getColumnBlackList().add("retail.id");
apijsonProvider.getColumnWhiteList().add("retail.*");
// apijsonProvider.getColumnWhiteList().add("retail.amt");
// apijsonProvider.getColumnBlackList().add("retail.amt");
// apijsonProvider.getColumnWhiteList().add("store.id");
SQLExplorer builder = new SQLExplorer(apijsonProvider);
System.out.println(builder.getSQL());
long et = System.currentTimeMillis();
Expand All @@ -32,5 +42,6 @@ public static void main( String[] args ) throws SQLProviderException
System.out.println("APIJSONParser解析用时:" + (et - st2) + "ms");
System.out.println("合计用时:" + (et - st) + "ms");
//实际解析耗时21ms

}
}
20 changes: 20 additions & 0 deletions src/main/java/zuo/biao/apijson/parser/SQLProviderException.java
Original file line number Diff line number Diff line change
@@ -1,14 +1,18 @@
package zuo.biao.apijson.parser;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

import zuo.biao.apijson.parser.Message.ErrorElement;


public class SQLProviderException extends Exception {

private List<ErrorElement> errors;
private Set<String> errorMsgs = new HashSet<>();

public SQLProviderException() {

}
Expand All @@ -22,6 +26,7 @@ public SQLProviderException(List<ErrorElement> errors) {
List<StackTraceElement> stackTrace = new ArrayList<>();
StringBuffer sb = new StringBuffer();
for(int i = 0; i < errors.size(); i++) {
errorMsgs.add(errors.get(i).getErrorMsg() + Utils.NEW_LINE);
sb.append( i + ".Error message: ----> " + errors.get(i).getErrorMsg() + Utils.NEW_LINE);
stackTrace.add(errors.get(i).getStack());
}
Expand All @@ -30,4 +35,19 @@ public SQLProviderException(List<ErrorElement> errors) {
super.setStackTrace(stackTrace.toArray(stack));
this.errors = errors;
}

public List<ErrorElement> getErrors() {
return errors;
}
public void setErrors(List<ErrorElement> errors) {
this.errors = errors;
}
public Set<String> getErrorMsgs() {
return errorMsgs;
}
public void setErrorMsgs(Set<String> errorMsgs) {
this.errorMsgs = errorMsgs;
}


}
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#Generated by Maven Integration for Eclipse
#Tue Dec 18 10:59:37 CST 2018
#Mon Dec 24 14:28:09 CST 2018
version=0.0.1-SNAPSHOT
groupId=APIJSONParser
m2e.projectName=APIJSONParser
Expand Down
Binary file modified target/classes/zuo/biao/apijson/parser/APIJSONProvider.class
Binary file not shown.
Binary file modified target/classes/zuo/biao/apijson/parser/App.class
Binary file not shown.
Binary file modified target/classes/zuo/biao/apijson/parser/SQLProviderException.class
Binary file not shown.