diff --git a/APIJSON-Java-Server/.idea/libraries/ojdbc6__2_.xml b/APIJSON-Java-Server/.idea/libraries/ojdbc6__2_.xml
new file mode 100644
index 000000000..d7ddf5c6c
--- /dev/null
+++ b/APIJSON-Java-Server/.idea/libraries/ojdbc6__2_.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/APIJSON-Java-Server/.idea/workspace.xml b/APIJSON-Java-Server/.idea/workspace.xml
new file mode 100644
index 000000000..440bed4f6
--- /dev/null
+++ b/APIJSON-Java-Server/.idea/workspace.xml
@@ -0,0 +1,805 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LIMIT
+ getWhereString
+ ORACLE
+ `
+ ''
+ getLimitString
+ 不合法!预编译模式下
+ ^[0-9%!=<>,]+$
+ [0-9%!=<>,
+
+
+
+
+
+
+
+
+
+
+
+ true
+ DEFINITION_ORDER
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1539677793812
+
+
+ 1539677793812
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ file://$PROJECT_DIR$/APIJSONLibrary/src/main/java/zuo/biao/apijson/server/AbstractSQLConfig.java
+ 1276
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PATTERN_RANGE.matcher("20180908").matches()
+ JAVA
+ EXPRESSION
+
+
+ PATTERN_RANGE.matcher("201809-08").matches()
+ JAVA
+ EXPRESSION
+
+
+ PATTERN_RANGE.matcher("2018-09-08").matches()
+ JAVA
+ EXPRESSION
+
+
+ PATTERN_RANGE.matcher(">2018-09-08").matches()
+ JAVA
+ EXPRESSION
+
+
+ PATTERN_RANGE.matcher(">`2018-09-08`").matches()
+ JAVA
+ EXPRESSION
+
+
+ PATTERN_RANGE.matcher((String) range).matches()
+ JAVA
+ EXPRESSION
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Spring
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1.8
+
+
+
+
+
+
+
+
+
+
+
+ apijson-demo
+
+
+
+
+
+
+
+
+
+
+
+ Maven: ch.qos.logback:logback-classic:1.1.7
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/APIJSON-Java-Server/APIJSONDemo_oracle/apijson-demo.iml b/APIJSON-Java-Server/APIJSONDemo_oracle/apijson-demo.iml
index e34a907a0..d65af067b 100644
--- a/APIJSON-Java-Server/APIJSONDemo_oracle/apijson-demo.iml
+++ b/APIJSON-Java-Server/APIJSONDemo_oracle/apijson-demo.iml
@@ -4,6 +4,15 @@
+
+
+
+
+
+
+
+
+
@@ -16,16 +25,15 @@
-
-
+
-
+
@@ -66,5 +74,6 @@
+
\ No newline at end of file
diff --git a/APIJSON-Java-Server/APIJSONDemo_oracle/libs/ojdbc6.jar b/APIJSON-Java-Server/APIJSONDemo_oracle/libs/ojdbc6.jar
new file mode 100644
index 000000000..ec3d6f147
Binary files /dev/null and b/APIJSON-Java-Server/APIJSONDemo_oracle/libs/ojdbc6.jar differ
diff --git a/APIJSON-Java-Server/APIJSONDemo_oracle/pom.xml b/APIJSON-Java-Server/APIJSONDemo_oracle/pom.xml
index be41cf7f1..80c09d5e2 100644
--- a/APIJSON-Java-Server/APIJSONDemo_oracle/pom.xml
+++ b/APIJSON-Java-Server/APIJSONDemo_oracle/pom.xml
@@ -31,12 +31,6 @@
1.3
-
- ojdbc6
- ojdbc6
- 1.0
-
-
@@ -63,6 +57,11 @@
fastjson
1.2.21
+
+ zuo.biao.apijson.server
+ apijson-library
+ 2.1.0-SNAPSHOT
+
diff --git a/APIJSON-Java-Server/APIJSONDemo_oracle/src/main/java/apijson/demo/server/DemoFunction.java b/APIJSON-Java-Server/APIJSONDemo_oracle/src/main/java/apijson/demo/server/DemoFunction.java
index 912472eb6..d4920cea8 100644
--- a/APIJSON-Java-Server/APIJSONDemo_oracle/src/main/java/apijson/demo/server/DemoFunction.java
+++ b/APIJSON-Java-Server/APIJSONDemo_oracle/src/main/java/apijson/demo/server/DemoFunction.java
@@ -252,6 +252,17 @@ public double divide(@NotNull JSONObject request, String i0, String i1) {
}
//判断是否为空 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+
+ @Override
+ public boolean gt(JSONObject request, String obj1, String obj2) {
+ return obj1.compareTo(obj2) > 0;
+ }
+
+ @Override
+ public boolean gte(JSONObject request, String obj1, String obj2) {
+ return obj1.compareTo(obj2) >= 0;
+ }
+
/**判断array是否为空
* @param request
* @param array
diff --git a/APIJSON-Java-Server/APIJSONDemo_oracle/src/main/java/apijson/demo/server/DemoVerifier.java b/APIJSON-Java-Server/APIJSONDemo_oracle/src/main/java/apijson/demo/server/DemoVerifier.java
index 1654ae008..d75f67e56 100644
--- a/APIJSON-Java-Server/APIJSONDemo_oracle/src/main/java/apijson/demo/server/DemoVerifier.java
+++ b/APIJSON-Java-Server/APIJSONDemo_oracle/src/main/java/apijson/demo/server/DemoVerifier.java
@@ -47,6 +47,9 @@ public class DemoVerifier extends AbstractVerifier {
ACCESS_MAP.put(Verify.class.getSimpleName(), getAccessMap(Verify.class.getAnnotation(MethodAccess.class)));
ACCESS_MAP.put(Login.class.getSimpleName(), getAccessMap(Login.class.getAnnotation(MethodAccess.class)));
ACCESS_MAP.put(Contract.class.getSimpleName(), getAccessMap(Contract.class.getAnnotation(MethodAccess.class)));
+ ACCESS_MAP.put("Predecuserlist", getAccessMap(Contract.class.getAnnotation(MethodAccess.class)));
+
+ ACCESS_MAP.put("Predecheadvo", getAccessMap(Contract.class.getAnnotation(MethodAccess.class)));
}
diff --git a/APIJSON-Java-Server/APIJSONDemo_oracle/src/main/java/apijson/demo/server/FunctionList.java b/APIJSON-Java-Server/APIJSONDemo_oracle/src/main/java/apijson/demo/server/FunctionList.java
index 548ed08a4..40a0d2e6a 100644
--- a/APIJSON-Java-Server/APIJSONDemo_oracle/src/main/java/apijson/demo/server/FunctionList.java
+++ b/APIJSON-Java-Server/APIJSONDemo_oracle/src/main/java/apijson/demo/server/FunctionList.java
@@ -25,6 +25,16 @@
*/
public interface FunctionList {
+ /**
+ * greater than
+ * @param request
+ * @param obj1
+ * @param obj2
+ * @return
+ */
+ public boolean gt(@NotNull JSONObject request, String obj1,String obj2);
+
+ public boolean gte(@NotNull JSONObject request, String obj1,String obj2);
//判断是否为空 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<
/**判断array是否为空
* @param request
diff --git a/APIJSON-Java-Server/APIJSONDemo_oracle/src/main/resources/application.yml b/APIJSON-Java-Server/APIJSONDemo_oracle/src/main/resources/application.yml
index 8a830750e..3f6e59ef9 100644
--- a/APIJSON-Java-Server/APIJSONDemo_oracle/src/main/resources/application.yml
+++ b/APIJSON-Java-Server/APIJSONDemo_oracle/src/main/resources/application.yml
@@ -1,5 +1,5 @@
-url: jdbc:oracle:thin:@192.168.2.155:1521:orcl
-username: db3
-password: 123456
+url: jdbc:oracle:thin:@//192.168.112.171:1521/orcl
+username: entry_user
+password: dcjet
driverclassame: oracle.jdbc.driver.OracleDriver
-schema: db3
+schema: entry_user
\ No newline at end of file
diff --git a/APIJSON-Java-Server/APIJSONDemo_oracle/src/test/java/zuo/biao/apijson/server/ApplicationTests.java b/APIJSON-Java-Server/APIJSONDemo_oracle/src/test/java/zuo/biao/apijson/server/ApplicationTests.java
deleted file mode 100644
index 6dcfe9e64..000000000
--- a/APIJSON-Java-Server/APIJSONDemo_oracle/src/test/java/zuo/biao/apijson/server/ApplicationTests.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package zuo.biao.apijson.server;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.context.junit4.SpringRunner;
-
-@RunWith(SpringRunner.class)
-@SpringBootTest
-public class ApplicationTests {
-
- @Test
- public void contextLoads() {
- //TODO Test Case,包括GitHub README介绍和简版demo
- }
-
-}
diff --git a/APIJSON-Java-Server/APIJSONLibrary/apijson-library.iml b/APIJSON-Java-Server/APIJSONLibrary/apijson-library.iml
new file mode 100644
index 000000000..19504c006
--- /dev/null
+++ b/APIJSON-Java-Server/APIJSONLibrary/apijson-library.iml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/APIJSON-Java-Server/APIJSONLibrary/src/main/java/zuo/biao/apijson/server/AbstractSQLConfig.java b/APIJSON-Java-Server/APIJSONLibrary/src/main/java/zuo/biao/apijson/server/AbstractSQLConfig.java
index d3bbb8ea2..9f2783353 100755
--- a/APIJSON-Java-Server/APIJSONLibrary/src/main/java/zuo/biao/apijson/server/AbstractSQLConfig.java
+++ b/APIJSON-Java-Server/APIJSONLibrary/src/main/java/zuo/biao/apijson/server/AbstractSQLConfig.java
@@ -50,7 +50,7 @@
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.annotation.JSONField;
-import com.sun.xml.internal.ws.util.StringUtils;
+//import com.sun.xml.internal.ws.util.StringUtils;
import zuo.biao.apijson.Log;
import zuo.biao.apijson.RequestMethod;
@@ -571,10 +571,10 @@ public String getColumnString() throws Exception {
if (isKeyPrefix()) {
ckeys[j] = tableAlias + "." + origin;
if (isColumn) {
- ckeys[j] += " AS `" + (isMain() ? "" : tableAlias + ".") + (StringUtil.isEmpty(alias, true) ? origin : alias) + "`";
+ ckeys[j] += " AS \"" + (isMain() ? "" : tableAlias + ".") + (StringUtil.isEmpty(alias, true) ? origin : alias) + "\"";
}
} else {
- ckeys[j] = origin + (StringUtil.isEmpty(alias, true) ? "" : " AS `" + alias + "`");
+ ckeys[j] = origin + (StringUtil.isEmpty(alias, true) ? "" : " AS \"" + alias + "\"");
}
}
// }
@@ -604,10 +604,10 @@ public String getColumnString() throws Exception {
String origin = method + "(" + StringUtil.getString(ckeys) + ")";
if (isKeyPrefix()) {
- keys[i] = origin + " AS `" + (isMain() ? "" : tableAlias + ".") + (StringUtil.isEmpty(alias, true) ? method : alias) + "`";
+ keys[i] = origin + " AS \"" + (isMain() ? "" : tableAlias + ".") + (StringUtil.isEmpty(alias, true) ? method : alias) + "\"";
}
else {
- keys[i] = origin + (StringUtil.isEmpty(alias, true) ? "" : " AS `" + alias + "`");
+ keys[i] = origin + (StringUtil.isEmpty(alias, true) ? "" : " AS \"" + alias + "\"");
}
}
@@ -1243,7 +1243,7 @@ public String getRegExpString(String key, String value) {
private static final Pattern PATTERN_HAVING;
private static final Pattern PATTERN_HAVING_SUFFIX;
static {
- PATTERN_RANGE = Pattern.compile("^[0-9%!=<>,]+$"); // ^[a-zA-Z0-9_*%!=<>(),"]+$ 导致 exists(select*from(Comment)) 通过!
+ PATTERN_RANGE = Pattern.compile("^[0-9%!=<>,`-]+$"); // ^[a-zA-Z0-9_*%!=<>(),"]+$ 导致 exists(select*from(Comment)) 通过!
PATTERN_HAVING = Pattern.compile("^[A-Za-z0-9%!=<>]+$"); //TODO 改成更好的正则,校验前面为单词,中间为操作符,后面为值
PATTERN_HAVING_SUFFIX = Pattern.compile("^[0-9%!=<>]+$"); // ^[a-zA-Z0-9_*%!=<>(),"]+$ 导致 exists(select*from(Comment)) 通过!
}
@@ -1275,9 +1275,10 @@ public String getRangeString(String key, Object range) throws Exception {
}
if (range instanceof String) {//非Number类型需要客户端拼接成 < 'value0', >= 'value1'这种
if (isPrepared() && PATTERN_RANGE.matcher((String) range).matches() == false) {
- throw new UnsupportedOperationException("字符串 " + range + " 不合法!预编译模式下 key{}:\"condition\" 中 condition 必须符合正则表达式 ^[0-9%!=<>,]+$ !不允许空格!");
+ throw new UnsupportedOperationException("字符串 " + range + " 不合法!预编译模式下 key{}:\"condition\" 中 condition 必须符合正则表达式 ^[0-9%!=<>,`]+$ !不允许空格!");
}
-
+ // replace `
+ range = range.toString().replaceAll("`", "'" );
String[] conditions = StringUtil.split((String) range);
String condition = "";
if (conditions != null) {
@@ -1547,7 +1548,13 @@ private static String getConditionString(String column, String table, AbstractSQ
//no need to optimize
// if (config.getPage() <= 0 || ID.equals(column.trim())) {
- return condition + config.getLimitString();
+
+ //oracle
+ //getPage(), getCount()
+
+ String limit = (where.isEmpty() ? " " : " AND") + " rownum <= " + (config.getPage() + 1) * config.getCount();
+ return condition + (config.getCount() <= 0 ? "" : limit ) ;
+ //config.getLimitString();
// }
//
//