Skip to content

Commit c819558

Browse files
committed
Server:新增支持 IBM DB2 数据库
1 parent e4b6304 commit c819558

File tree

5 files changed

+43
-6
lines changed

5 files changed

+43
-6
lines changed

APIJSON-Java-Server/APIJSONBoot/src/main/java/apijson/boot/DemoSQLConfig.java

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,9 @@ public String getDBVersion() {
9494
if (isOracle()) {
9595
return "18c"; //TODO 改成你自己的
9696
}
97+
if (isDb2()) {
98+
return "11.5"; //TODO 改成你自己的
99+
}
97100
return null;
98101
}
99102
@Override
@@ -110,6 +113,9 @@ public String getDBUri() {
110113
if (isOracle()) {
111114
return "jdbc:oracle:thin:@localhost:1521:orcl"; //TODO 改成你自己的
112115
}
116+
if (isDb2()) {
117+
return "jdbc:db2://localhost:50000/BLUDB"; //TODO 改成你自己的
118+
}
113119
return null;
114120
}
115121
@Override
@@ -126,6 +132,9 @@ public String getDBAccount() {
126132
if (isOracle()) {
127133
return "scott"; //TODO 改成你自己的
128134
}
135+
if (isDb2()) {
136+
return "db2admin"; //TODO 改成你自己的
137+
}
129138
return null;
130139
}
131140
@Override
@@ -142,9 +151,12 @@ public String getDBPassword() {
142151
if (isOracle()) {
143152
return "tiger"; //TODO 改成你自己的
144153
}
154+
if (isDb2()) {
155+
return "123"; //TODO 改成你自己的
156+
}
145157
return null;
146158
}
147-
159+
148160
//取消注释后,默认的数据库类型会由 MySQL 改为 PostgreSQL
149161
// @Override
150162
// public String getDatabase() {
@@ -169,5 +181,9 @@ public String getDBPassword() {
169181
// public boolean isOracle() {
170182
// return false;
171183
// }
184+
// @Override
185+
// public boolean isDb2() {
186+
// return false;
187+
// }
172188

173189
}

APIJSON-Java-Server/APIJSONFramework/src/main/java/apijson/framework/APIJSONSQLExecutor.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,16 @@ public class APIJSONSQLExecutor extends AbstractSQLExecutor {
8989
Log.e(TAG, "加载 Oracle 驱动失败,请检查 pom.xml 中 com.oracle.jdbc 版本是否存在以及可用 !!!");
9090
}
9191

92+
try { //加载驱动程序
93+
Log.d(TAG, "尝试加载 DB2 驱动 <<<<<<<<<<<<<<<<<<<<< ");
94+
Class.forName("com.ibm.db2.jcc.DB2Driver");
95+
Log.d(TAG, "成功加载 DB2 驱动!>>>>>>>>>>>>>>>>>>>>> ");
96+
}
97+
catch (ClassNotFoundException e) {
98+
e.printStackTrace();
99+
Log.e(TAG, "加载 DB2 驱动失败,请检查 pom.xml 中 com.ibm.db2 版本是否存在以及可用 !!!");
100+
}
101+
92102
}
93103

94104

APIJSON-Java-Server/APIJSONORM/src/main/java/apijson/orm/AbstractSQLConfig.java

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@ public abstract class AbstractSQLConfig implements SQLConfig {
104104
DATABASE_LIST.add(DATABASE_POSTGRESQL);
105105
DATABASE_LIST.add(DATABASE_SQLSERVER);
106106
DATABASE_LIST.add(DATABASE_ORACLE);
107+
DATABASE_LIST.add(DATABASE_DB2);
107108

108109
RAW_MAP = new HashMap<>();
109110
}
@@ -299,6 +300,13 @@ public boolean isOracle() {
299300
public static boolean isOracle(String db) {
300301
return DATABASE_ORACLE.equals(db);
301302
}
303+
@Override
304+
public boolean isDb2() {
305+
return isDb2(getSQLDatabase());
306+
}
307+
public static boolean isDb2(String db) {
308+
return DATABASE_DB2.equals(db);
309+
}
302310

303311
@Override
304312
public String getQuote() {
@@ -611,7 +619,7 @@ public String getOrderString(boolean hasPrefix) {
611619

612620
String order = StringUtil.getTrimedString(getOrder());
613621

614-
if (getCount() > 0 && (isOracle() || isSQLServer())) { // OracleSQL Server 的 OFFSET 必须加 ORDER BY
622+
if (getCount() > 0 && (isOracle() || isSQLServer() || isDb2())) { // Oracle, SQL Server, DB2 的 OFFSET 必须加 ORDER BY
615623

616624
// String[] ss = StringUtil.split(order);
617625
if (StringUtil.isEmpty(order, true)) { //SQL Server 子查询内必须指定 OFFSET 才能用 ORDER BY
@@ -1137,7 +1145,7 @@ public String getLimitString() {
11371145
if (count <= 0 || RequestMethod.isHeadMethod(getMethod(), true)) {
11381146
return "";
11391147
}
1140-
return getLimitString(getPage(), getCount(), isOracle() || isSQLServer());
1148+
return getLimitString(getPage(), getCount(), isOracle() || isSQLServer() || isDb2());
11411149
}
11421150
/**获取限制数量
11431151
* @param limit

APIJSON-Java-Server/APIJSONORM/src/main/java/apijson/orm/Join.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public class Join {
2828
private String originKey;
2929
private String originValue;
3030

31-
private String joinType; // "@" - APP, "<" - LEFT, ">" - RIGHT, "&" - INNER, "|" - FULL, "!" - OUTER, "(" - ANTI, ")" - FOREIGN, "^" - SIDE, "*" - CROSS
31+
private String joinType; // "@" - APP, "<" - LEFT, ">" - RIGHT, "*" - CROSS, "&" - INNER, "|" - FULL, "!" - OUTER, "^" - SIDE, "(" - ANTI, ")" - FOREIGN
3232
private String relateType; // "" - 一对一, "{}" - 一对多, "<>" - 多对一
3333
private JSONObject request; // { "id@":"/Moment/userId" }
3434
private String table; //User

APIJSON-Java-Server/APIJSONORM/src/main/java/apijson/orm/SQLConfig.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ public interface SQLConfig {
3030
String DATABASE_POSTGRESQL = "POSTGRESQL";
3131
String DATABASE_SQLSERVER = "SQLSERVER";
3232
String DATABASE_ORACLE = "ORACLE";
33+
String DATABASE_DB2 = "DB2";
3334

3435
String SCHEMA_INFORMATION = "information_schema"; //MySQL, PostgreSQL, SQL Server 都有的系统模式
3536
String SCHEMA_SYS = "sys"; //SQL Server 系统模式
@@ -44,10 +45,12 @@ public interface SQLConfig {
4445
boolean isPostgreSQL();
4546
boolean isSQLServer();
4647
boolean isOracle();
47-
//暂时只兼容以上 4 种
48+
boolean isDb2();
49+
//暂时只兼容以上 5 种
4850
// boolean isSQL();
51+
// boolean isTSQL();
4952
// boolean isPLSQL();
50-
// boolean isTransactSQL();
53+
// boolean isAnsiSQL();
5154

5255
boolean limitSQLCount(); //用来给 Table, Column 等系统属性表来绕过 MAX_SQL_COUNT 等限制
5356

0 commit comments

Comments
 (0)