增加显示加载驱动方法.

This commit is contained in:
nieqiurong 2024-09-01 14:18:18 +08:00
parent 864aad6132
commit f6f98718f3
2 changed files with 40 additions and 2 deletions

View File

@ -16,6 +16,7 @@
package com.baomidou.mybatisplus.generator.config;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.core.toolkit.ClassUtils;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.generator.config.converts.MySqlTypeConvert;
import com.baomidou.mybatisplus.generator.config.converts.TypeConverts;
@ -127,6 +128,13 @@ public class DataSourceConfig {
*/
private ITypeConvertHandler typeConvertHandler;
/**
* 驱动全类名
*
* @since 3.5.8
*/
private String driverClassName;
/**
* 获取数据库查询
*/
@ -136,8 +144,7 @@ public class DataSourceConfig {
DbType dbType = getDbType();
DbQueryRegistry dbQueryRegistry = new DbQueryRegistry();
// 默认 MYSQL
dbQuery = Optional.ofNullable(dbQueryRegistry.getDbQuery(dbType))
.orElseGet(() -> dbQueryRegistry.getDbQuery(DbType.MYSQL));
dbQuery = Optional.ofNullable(dbQueryRegistry.getDbQuery(dbType)).orElseGet(() -> dbQueryRegistry.getDbQuery(DbType.MYSQL));
}
return dbQuery;
}
@ -331,6 +338,11 @@ public class DataSourceConfig {
return typeConvertHandler;
}
@Nullable
public String getDriverClassName() {
return driverClassName;
}
/**
* 数据库配置构建者
*
@ -466,6 +478,19 @@ public class DataSourceConfig {
return this;
}
/**
* 指定连接驱动
* <li>对于一些老驱动(低于4.0规范)没有实现SPI不能自动加载的,手动指定加载让其初始化注册到驱动列表去.</li>
*
* @param className 驱动全类名
* @return this
* @since 3.5.8
*/
public Builder driverClassName(@NotNull String className) {
ClassUtils.toClassConfident(className);
this.dataSourceConfig.driverClassName = className;
return this;
}
/**
* 构建数据库配置

View File

@ -33,6 +33,19 @@ public class DataSourceConfigTest {
Assertions.assertEquals(dataSourceConfig.getSchemaName(), "mp");
Assertions.assertEquals(dataSourceConfig.getDbType(), DbType.H2);
Assertions.assertEquals(dataSourceConfig.getDbQuery().getClass(), MySqlQuery.class);
Assertions.assertNotNull(dataSourceConfig.getKeyWordsHandler());
Assertions.assertEquals(dataSourceConfig.getKeyWordsHandler().getClass(), MySqlKeyWordsHandler.class);
Assertions.assertEquals(dataSourceConfig.getTypeConvert().getClass(), PostgreSqlTypeConvert.class);
dataSourceConfig = new DataSourceConfig.Builder("jdbc:h2:mem:test;MODE=mysql;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE", "sa", "")
.dbQuery(new MySqlQuery()).schema("mp").keyWordsHandler(new MySqlKeyWordsHandler()).typeConvert(new PostgreSqlTypeConvert())
.driverClassName("org.h2.Driver")
.build();
Assertions.assertEquals(dataSourceConfig.getSchemaName(), "mp");
Assertions.assertEquals(dataSourceConfig.getDbType(), DbType.H2);
Assertions.assertEquals(dataSourceConfig.getDbQuery().getClass(), MySqlQuery.class);
Assertions.assertNotNull(dataSourceConfig.getKeyWordsHandler());
Assertions.assertEquals(dataSourceConfig.getDriverClassName(), "org.h2.Driver");
Assertions.assertEquals(dataSourceConfig.getKeyWordsHandler().getClass(), MySqlKeyWordsHandler.class);
Assertions.assertEquals(dataSourceConfig.getTypeConvert().getClass(), PostgreSqlTypeConvert.class);
}