mirror of
https://gitee.com/chinabugotech/hutool.git
synced 2025-05-09 23:51:34 +08:00
fix code
This commit is contained in:
parent
fecbbb4ce8
commit
17433887e7
@ -13,14 +13,14 @@
|
||||
package org.dromara.hutool.db.driver;
|
||||
|
||||
import org.dromara.hutool.core.io.IoUtil;
|
||||
import org.dromara.hutool.core.reflect.ClassUtil;
|
||||
import org.dromara.hutool.core.reflect.ConstructorUtil;
|
||||
import org.dromara.hutool.core.text.StrUtil;
|
||||
import org.dromara.hutool.db.DbException;
|
||||
import org.dromara.hutool.db.ds.DSWrapper;
|
||||
|
||||
import javax.sql.DataSource;
|
||||
import java.sql.Connection;
|
||||
import java.sql.DatabaseMetaData;
|
||||
import java.sql.SQLException;
|
||||
import java.sql.*;
|
||||
|
||||
/**
|
||||
* 驱动相关工具类,包括自动获取驱动类名
|
||||
@ -29,6 +29,31 @@ import java.sql.SQLException;
|
||||
* @since 4.0.10
|
||||
*/
|
||||
public class DriverUtil {
|
||||
|
||||
/**
|
||||
* 创建驱动
|
||||
*
|
||||
* @param driverName 驱动类名
|
||||
* @return 驱动
|
||||
* @since 6.0.0
|
||||
*/
|
||||
public static Driver createDriver(final String driverName) {
|
||||
return createDriver(driverName, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建驱动
|
||||
*
|
||||
* @param driverName 驱动类名
|
||||
* @param classLoader 类加载器
|
||||
* @return 驱动
|
||||
* @since 6.0.0
|
||||
*/
|
||||
public static Driver createDriver(final String driverName, final ClassLoader classLoader) {
|
||||
final Class<?> driverClass = ClassUtil.forName(driverName, true, classLoader);
|
||||
return (Driver) ConstructorUtil.newInstance(driverClass);
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过JDBC URL等信息识别JDBC驱动名
|
||||
*
|
||||
|
@ -48,7 +48,7 @@ public class PooledConnection extends ConnectionWrapper implements Poolable<Conn
|
||||
if(StrUtil.isNotBlank(driver)){
|
||||
try {
|
||||
Class.forName(driver);
|
||||
} catch (ClassNotFoundException e) {
|
||||
} catch (final ClassNotFoundException e) {
|
||||
throw new DbException(e);
|
||||
}
|
||||
}
|
||||
@ -70,7 +70,11 @@ public class PooledConnection extends ConnectionWrapper implements Poolable<Conn
|
||||
}
|
||||
|
||||
try {
|
||||
this.raw = DriverManager.getConnection(config.getUrl(), info);
|
||||
if(null != dataSource.driver){
|
||||
this.raw = dataSource.driver.connect(config.getUrl(), info);
|
||||
}else{
|
||||
this.raw = DriverManager.getConnection(config.getUrl(), info);
|
||||
}
|
||||
} catch (final SQLException e) {
|
||||
throw new DbException(e);
|
||||
}
|
||||
|
@ -17,12 +17,15 @@ import org.dromara.hutool.core.pool.ObjectFactory;
|
||||
import org.dromara.hutool.core.pool.ObjectPool;
|
||||
import org.dromara.hutool.core.pool.partition.PartitionObjectPool;
|
||||
import org.dromara.hutool.core.pool.partition.PartitionPoolConfig;
|
||||
import org.dromara.hutool.core.text.StrUtil;
|
||||
import org.dromara.hutool.db.DbException;
|
||||
import org.dromara.hutool.db.config.ConnectionConfig;
|
||||
import org.dromara.hutool.db.driver.DriverUtil;
|
||||
import org.dromara.hutool.db.ds.simple.AbstractDataSource;
|
||||
import org.dromara.hutool.setting.props.Props;
|
||||
|
||||
import java.sql.Connection;
|
||||
import java.sql.Driver;
|
||||
import java.sql.SQLException;
|
||||
|
||||
/**
|
||||
@ -37,6 +40,7 @@ public class PooledDataSource extends AbstractDataSource {
|
||||
private static final String KEY_INITIAL_SIZE = "initialSize";
|
||||
private static final String KEY_MAX_ACTIVE = "maxActive";
|
||||
|
||||
protected Driver driver;
|
||||
private final int maxWait;
|
||||
private final ObjectPool<Connection> connPool;
|
||||
|
||||
@ -47,6 +51,10 @@ public class PooledDataSource extends AbstractDataSource {
|
||||
*/
|
||||
public PooledDataSource(final ConnectionConfig<?> config) {
|
||||
|
||||
final String driverName = config.getDriver();
|
||||
if (StrUtil.isNotBlank(driverName)) {
|
||||
this.driver = DriverUtil.createDriver(driverName);
|
||||
}
|
||||
final Props poolProps = Props.of(config.getPoolProps());
|
||||
this.maxWait = poolProps.getInt(KEY_MAX_WAIT, 6000);
|
||||
|
||||
@ -59,6 +67,17 @@ public class PooledDataSource extends AbstractDataSource {
|
||||
this.connPool = new PartitionObjectPool<>(poolConfig, createConnFactory(config));
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置驱动
|
||||
*
|
||||
* @param driver 驱动
|
||||
* @return this
|
||||
*/
|
||||
public PooledDataSource setDriver(final Driver driver) {
|
||||
this.driver = driver;
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Connection getConnection() throws SQLException {
|
||||
return (Connection) connPool.borrowObject();
|
||||
|
Loading…
x
Reference in New Issue
Block a user