Skip to content

Commit 1f7f0fd

Browse files
committed
Server:跨数据库@database:value中value取值只能是全大写;解决对MySQL输入的SQL与实际执行的SQL不符
1 parent 44a2b6e commit 1f7f0fd

File tree

3 files changed

+10
-10
lines changed

3 files changed

+10
-10
lines changed

APIJSON-Java-Server/APIJSONBoot/src/main/java/apijson/demo/server/DemoSQLExecutor.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ private PreparedStatement getStatement(@NotNull SQLConfig config) throws Excepti
9090
if (connection == null || connection.isClosed()) {
9191
Log.i(TAG, "select connection " + (connection == null ? " = null" : ("isClosed = " + connection.isClosed()))) ;
9292

93-
if (DemoSQLConfig.DATABASE_POSTGRESQL.equalsIgnoreCase(config.getDatabase())) { //PostgreSQL 不允许 cross-database
93+
if (DemoSQLConfig.DATABASE_POSTGRESQL.equals(config.getDatabase())) { //PostgreSQL 不允许 cross-database
9494
connection = DriverManager.getConnection(config.getDBUri(), config.getDBAccount(), config.getDBPassword());
9595
}
9696
else {
@@ -109,7 +109,7 @@ private PreparedStatement getStatement(@NotNull SQLConfig config) throws Excepti
109109
for (int i = 0; i < valueList.size(); i++) {
110110
v = valueList.get(i); //JSON.isBooleanOrNumberOrString(v) 解决 PostgreSQL: Can't infer the SQL type to use for an instance of com.alibaba.fastjson.JSONArray
111111

112-
if (DemoSQLConfig.DATABASE_POSTGRESQL.equalsIgnoreCase(config.getDatabase())) {
112+
if (DemoSQLConfig.DATABASE_POSTGRESQL.equals(config.getDatabase())) {
113113
if (JSON.isBooleanOrNumberOrString(v)) {
114114
statement.setObject(i + 1, v); //PostgreSQL JDBC 不支持隐式类型转换 tinyint = varchar 报错
115115
}

APIJSON-Java-Server/APIJSONORM/src/main/java/zuo/biao/apijson/server/AbstractSQLConfig.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,7 @@ public SQLConfig setDatabase(String database) {
198198

199199
@Override
200200
public String getQuote() {
201-
return DATABASE_POSTGRESQL.equalsIgnoreCase(getDatabase()) ? "\"" : "`";
201+
return DATABASE_POSTGRESQL.equals(getDatabase()) ? "\"" : "`";
202202
}
203203

204204
@Override
@@ -237,7 +237,7 @@ public String getTable() {
237237
@Override
238238
public String getSQLTable() {
239239
// String t = TABLE_KEY_MAP.containsKey(table) ? TABLE_KEY_MAP.get(table) : table;
240-
//如果要强制小写,则可在子类重写这个方法再 toLowerCase return DATABASE_POSTGRESQL.equalsIgnoreCase(getDatabase()) ? t.toLowerCase() : t;
240+
//如果要强制小写,则可在子类重写这个方法再 toLowerCase return DATABASE_POSTGRESQL.equals(getDatabase()) ? t.toLowerCase() : t;
241241
return TABLE_KEY_MAP.containsKey(table) ? TABLE_KEY_MAP.get(table) : table;
242242
}
243243
@JSONField(serialize = false)
@@ -258,7 +258,7 @@ public String getAlias() {
258258
}
259259
String q = getQuote();
260260
//getTable 不能小写,因为Verifier用大小写敏感的名称判断权限
261-
//如果要强制小写,则可在子类重写这个方法再 toLowerCase return q + (DATABASE_POSTGRESQL.equalsIgnoreCase(getDatabase()) ? alias.toLowerCase() : alias) + q;
261+
//如果要强制小写,则可在子类重写这个方法再 toLowerCase return q + (DATABASE_POSTGRESQL.equals(getDatabase()) ? alias.toLowerCase() : alias) + q;
262262
return q + alias + q;
263263
}
264264
@Override
@@ -1227,7 +1227,7 @@ private Object getValue(@NotNull Object value) {
12271227
preparedValueList.add(value);
12281228
return "?";
12291229
}
1230-
return value instanceof Number || value instanceof Boolean ? value : "'" + value + "'";
1230+
return (value instanceof Number || value instanceof Boolean) && DATABASE_POSTGRESQL.equals(getDatabase()) ? value : "'" + value + "'";
12311231
}
12321232
@Override
12331233
public List<Object> getPreparedValueList() {
@@ -1589,7 +1589,7 @@ public String getContainString(String key, Object[] childs, int type) throws Ill
15891589
throw new IllegalArgumentException(key + "<>:value 中value类型不能为JSON!");
15901590
}
15911591

1592-
if (DATABASE_POSTGRESQL.equalsIgnoreCase(getDatabase())) {
1592+
if (DATABASE_POSTGRESQL.equals(getDatabase())) {
15931593
condition += (i <= 0 ? "" : (Logic.isAnd(type) ? AND : OR))
15941594
+ getKey(key) + " @> " + getValue(newJSONArray(childs[i])); //operator does not exist: jsonb @> character varying "[" + childs[i] + "]");
15951595
} else {
@@ -1881,7 +1881,7 @@ public String getJoinString() throws Exception {
18811881
tn = j.getTargetName();
18821882

18831883
//如果要强制小写,则可在子类重写这个方法再 toLowerCase
1884-
// if (DATABASE_POSTGRESQL.equalsIgnoreCase(getDatabase())) {
1884+
// if (DATABASE_POSTGRESQL.equals(getDatabase())) {
18851885
// jt = jt.toLowerCase();
18861886
// tn = tn.toLowerCase();
18871887
// }

APIJSON-Java-Server/APIJSONORM/src/main/java/zuo/biao/apijson/server/SQLConfig.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@
2525
*/
2626
public interface SQLConfig {
2727

28-
String DATABASE_MYSQL = "MySQL";
29-
String DATABASE_POSTGRESQL = "PostgreSQL";
28+
String DATABASE_MYSQL = "MYSQL";
29+
String DATABASE_POSTGRESQL = "POSTGRESQL";
3030

3131
String SCHEMA_INFORMATION = "information_schema";
3232
String TABLE_SCHEMA = "table_schema";

0 commit comments

Comments
 (0)