兼容javax.persistence.jdbc.driver为空的情况
This commit is contained in:
@@ -16,6 +16,7 @@
|
|||||||
oracle.jdbc.driver.OracleDriver —————— oracle.jdbc.pool.OracleConnectionPoolDataSource
|
oracle.jdbc.driver.OracleDriver —————— oracle.jdbc.pool.OracleConnectionPoolDataSource
|
||||||
com.microsoft.sqlserver.jdbc.SQLServerDriver —————— com.microsoft.sqlserver.jdbc.SQLServerConnectionPoolDataSource
|
com.microsoft.sqlserver.jdbc.SQLServerDriver —————— com.microsoft.sqlserver.jdbc.SQLServerConnectionPoolDataSource
|
||||||
因此 com.mysql.jdbc.Driver 会被自动转换成 com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource
|
因此 com.mysql.jdbc.Driver 会被自动转换成 com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource
|
||||||
|
并且如果JDBC驱动是以上几个版本,javax.persistence.jdbc.driver属性都可以省略,Redkale会根据javax.persistence.jdbc.url的值来识别驱动
|
||||||
-->
|
-->
|
||||||
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
|
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
|
||||||
<property name="javax.persistence.jdbc.user" value="root"/>
|
<property name="javax.persistence.jdbc.user" value="root"/>
|
||||||
|
|||||||
@@ -191,15 +191,34 @@ public final class DataDefaultSource implements DataSource, Function<Class, Enti
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static ConnectionPoolDataSource createDataSource(final String source0, String url, String user, String password) throws Exception {
|
static ConnectionPoolDataSource createDataSource(String source0, String url, String user, String password) throws Exception {
|
||||||
String source = source0;
|
String source = source0;
|
||||||
if (source0.contains("Driver")) { //为了兼容JPA的配置文件
|
if (source0 == null || source0.isEmpty()) {
|
||||||
|
if (url.startsWith("jdbc:mysql:")) {
|
||||||
|
source0 = "com.mysql.jdbc.Driver";
|
||||||
|
} else if (url.startsWith("jdbc:mariadb:")) {
|
||||||
|
source0 = "org.mariadb.jdbc.Driver";
|
||||||
|
} else if (url.startsWith("jdbc:oracle:")) {
|
||||||
|
source0 = "oracle.jdbc.driver.OracleDriver";
|
||||||
|
} else if (url.startsWith("jdbc:postgresql:")) {
|
||||||
|
source0 = "org.postgresql.Driver";
|
||||||
|
} else if (url.startsWith("jdbc:microsoft:sqlserver:")) {
|
||||||
|
source0 = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (source0 != null && source0.contains("Driver")) { //为了兼容JPA的配置文件
|
||||||
switch (source0) {
|
switch (source0) {
|
||||||
case "org.mariadb.jdbc.Driver":
|
case "org.mariadb.jdbc.Driver":
|
||||||
source = "org.mariadb.jdbc.MySQLDataSource";
|
source = "org.mariadb.jdbc.MySQLDataSource";
|
||||||
break;
|
break;
|
||||||
|
case "com.mysql.cj.jdbc.Driver":
|
||||||
case "com.mysql.jdbc.Driver":
|
case "com.mysql.jdbc.Driver":
|
||||||
|
try {
|
||||||
|
Class.forName("com.mysql.cj.jdbc.MysqlConnectionPoolDataSource");
|
||||||
|
source = "com.mysql.cj.jdbc.MysqlConnectionPoolDataSource";
|
||||||
|
} catch (Exception e) {
|
||||||
source = "com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource";
|
source = "com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource";
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case "oracle.jdbc.driver.OracleDriver":
|
case "oracle.jdbc.driver.OracleDriver":
|
||||||
source = "oracle.jdbc.pool.OracleConnectionPoolDataSource";
|
source = "oracle.jdbc.pool.OracleConnectionPoolDataSource";
|
||||||
|
|||||||
Reference in New Issue
Block a user