This commit is contained in:
Looly
2021-04-04 12:12:53 +08:00
parent 78aaab53bc
commit d60b315a20
3 changed files with 23 additions and 1 deletions

View File

@@ -1,6 +1,7 @@
package cn.hutool.db.dialect;
import cn.hutool.core.util.ClassLoaderUtil;
import cn.hutool.core.util.ReUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.db.dialect.impl.AnsiSqlDialect;
import cn.hutool.db.dialect.impl.H2Dialect;
@@ -115,6 +116,12 @@ public class DialectFactory {
// 全部转为小写,忽略大小写
nameContainsProductInfo = StrUtil.cleanBlank(nameContainsProductInfo.toLowerCase());
// 首先判断是否为标准的JDBC URL截取jdbc:xxxx:中间部分
final String name = ReUtil.getGroup1("jdbc:(.*?):", nameContainsProductInfo);
if(StrUtil.isNotBlank(name)){
nameContainsProductInfo = name;
}
String driver = null;
if (nameContainsProductInfo.contains("mysql")) {
driver = ClassLoaderUtil.isPresent(DRIVER_MYSQL_V6) ? DRIVER_MYSQL_V6 : DRIVER_MYSQL;

View File

@@ -0,0 +1,14 @@
package cn.hutool.db.dialect;
import org.junit.Assert;
import org.junit.Test;
public class DriverUtilTest {
@Test
public void identifyDriverTest(){
String url = "jdbc:h2:file:./db/test;AUTO_SERVER=TRUE;DB_CLOSE_ON_EXIT=FALSE;MODE=MYSQL";
String driver = DriverUtil.identifyDriver(url); // driver 返回 mysql 的 driver
Assert.assertEquals("org.h2.Driver", driver);
}
}