Skip to content

Commit c6e3eea

Browse files
committed
Server: 升级 mysql-connector-java 驱动;兼容 MySQL 8;打包 apijson-orm-3.5.8.jar
1 parent dc00aae commit c6e3eea

File tree

5 files changed

+46
-7
lines changed

5 files changed

+46
-7
lines changed

APIJSON-Java-Server/APIJSONBoot/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
<dependency>
2929
<groupId>mysql</groupId>
3030
<artifactId>mysql-connector-java</artifactId>
31-
<version>5.1.40</version>
31+
<version>8.0.11</version>
3232
</dependency>
3333

3434
<dependency>

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

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ public class DemoSQLConfig extends AbstractSQLConfig {
4040

4141

4242
static {
43-
//默认模式名
43+
//TODO 默认模式名,改成你自己的
4444
DEFAULT_SCHEMA = "sys";
4545

4646
//表名映射,隐藏真实表名,对安全要求很高的表可以这么做
@@ -78,6 +78,11 @@ public String getUserIdKey(String schema, String table) {
7878
// return db == null ? DATABASE_POSTGRESQL : db;
7979
// }
8080

81+
@Override
82+
public String getDBVersion() {
83+
return "5.7.22"; //"8.0.11"; //MYSQL 8 和 7 使用的 JDBC 配置不一样
84+
}
85+
8186
@Override
8287
public String getDBUri() {
8388
//TODO 改成你自己的,TiDB 默认端口为 4000

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

Lines changed: 33 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -49,17 +49,30 @@ public class DemoSQLExecutor extends AbstractSQLExecutor {
4949

5050
static {
5151
try { //加载驱动程序
52-
Class.forName("com.mysql.jdbc.Driver");
53-
Log.d(TAG, "成功加载 MySQL 驱动!");
52+
Log.d(TAG, "尝试加载 MySQL 8 驱动 <<<<<<<<<<<<<<<<<<<<< ");
53+
Class.forName("com.mysql.cj.jdbc.Driver");
54+
Log.d(TAG, "成功加载 MySQL 8 驱动!>>>>>>>>>>>>>>>>>>>>>");
5455
} catch (ClassNotFoundException e) {
56+
Log.e(TAG, "加载 MySQL 8 驱动失败,请检查 pom.xml 中 mysql-connector-java 版本是否存在以及可用 !!!");
5557
e.printStackTrace();
58+
59+
try { //加载驱动程序
60+
Log.d(TAG, "尝试加载 MySQL 7 及以下版本的 驱动 <<<<<<<<<<<<<<<<<<<<< ");
61+
Class.forName("com.mysql.jdbc.Driver");
62+
Log.d(TAG, "成功加载 MySQL 7 及以下版本的 驱动!>>>>>>>>>>>>>>>>>>>>> ");
63+
} catch (ClassNotFoundException e2) {
64+
Log.e(TAG, "加载 MySQL 7 及以下版本的 驱动失败,请检查 pom.xml 中 mysql-connector-java 版本是否存在以及可用 !!!");
65+
e2.printStackTrace();
66+
}
5667
}
5768

5869
try { //加载驱动程序
70+
Log.d(TAG, "尝试加载 PostgresSQL 驱动 <<<<<<<<<<<<<<<<<<<<< ");
5971
Class.forName("org.postgresql.Driver");
60-
Log.d(TAG, "成功加载 PostgresSQL 驱动!");
72+
Log.d(TAG, "成功加载 PostgresSQL 驱动!>>>>>>>>>>>>>>>>>>>>> ");
6173
} catch (ClassNotFoundException e) {
6274
e.printStackTrace();
75+
Log.e(TAG, "加载 PostgresSQL 驱动失败,请检查 libs 目录中 postgresql.jar 版本是否存在以及可用 !!!");
6376
}
6477
}
6578

@@ -95,8 +108,23 @@ public PreparedStatement getStatement(@NotNull SQLConfig config) throws Exceptio
95108
connection = DriverManager.getConnection(config.getDBUri(), config.getDBAccount(), config.getDBPassword());
96109
}
97110
else {
98-
connection = DriverManager.getConnection(config.getDBUri() + "?useUnicode=true&characterEncoding=UTF-8&user="
99-
+ config.getDBAccount() + "&password=" + config.getDBPassword());
111+
int v;
112+
try {
113+
String[] vs = config.getDBVersion().split("[.]");
114+
v = Integer.parseInt(vs[0]);
115+
} catch (Exception e) {
116+
v = 1;
117+
Log.e(TAG, "getStatement try { String[] vs = config.getDBVersion().split([.]); ... >> } catch (Exception e) {\n" + e.getMessage());
118+
}
119+
120+
if (v >= 8) {
121+
connection = DriverManager.getConnection(config.getDBUri() + "?userSSL=false&serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=UTF-8&user="
122+
+ config.getDBAccount() + "&password=" + config.getDBPassword());
123+
}
124+
else {
125+
connection = DriverManager.getConnection(config.getDBUri() + "?useUnicode=true&characterEncoding=UTF-8&user="
126+
+ config.getDBAccount() + "&password=" + config.getDBPassword());
127+
}
100128
}
101129
connectionMap.put(config.getDatabase(), connection);
102130
}

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,12 @@ public interface SQLConfig {
4444
String getUserIdKey();
4545

4646

47+
/**获取数据库版本号,可通过判断版本号解决一些 JDBC 驱动连接数据库的兼容问题
48+
* MYSQL: 8.0, 5.7, 5.6 等; PostgreSQL: 11, 10, 9.6 等
49+
* @return
50+
*/
51+
String getDBVersion();
52+
4753
/**获取数据库地址
4854
* @return
4955
*/

0 commit comments

Comments
 (0)