From 883441a11393a24bec1b1a1183b599dac9b4fefa Mon Sep 17 00:00:00 2001 From: Looly Date: Mon, 18 Dec 2023 01:30:31 +0800 Subject: [PATCH] fix code --- .../hutool/db/ds/pooled/DbSetting.java | 24 +-- .../hutool/db/ds/pooled/PooledConnection.java | 2 +- .../hutool/db/ds/pooled/PooledDSFactory.java | 22 +-- .../hutool/db/ds/pooled/PooledDataSource.java | 6 +- .../hutool/db/ds/pooled/PooledDbConfig.java | 77 ++++++++ .../db/ds/{pooled => simple}/DbConfig.java | 48 +---- .../hutool/db/ds/simple/SimpleDSFactory.java | 13 +- .../hutool/db/ds/simple/SimpleDataSource.java | 168 +++++------------- 8 files changed, 155 insertions(+), 205 deletions(-) create mode 100644 hutool-db/src/main/java/org/dromara/hutool/db/ds/pooled/PooledDbConfig.java rename hutool-db/src/main/java/org/dromara/hutool/db/ds/{pooled => simple}/DbConfig.java (64%) diff --git a/hutool-db/src/main/java/org/dromara/hutool/db/ds/pooled/DbSetting.java b/hutool-db/src/main/java/org/dromara/hutool/db/ds/pooled/DbSetting.java index 366ffc757..2bcc0d362 100644 --- a/hutool-db/src/main/java/org/dromara/hutool/db/ds/pooled/DbSetting.java +++ b/hutool-db/src/main/java/org/dromara/hutool/db/ds/pooled/DbSetting.java @@ -57,41 +57,41 @@ public class DbSetting { * @param group 分组 * @return 分组 */ - public DbConfig getDbConfig(final String group) { + public PooledDbConfig getDbConfig(final String group) { final Setting config = setting.getSetting(group); if (MapUtil.isEmpty(config)) { throw new DbRuntimeException("No Hutool pool config for group: [{}]", group); } - final DbConfig dbConfig = new DbConfig(); + final PooledDbConfig pooledDbConfig = new PooledDbConfig(); // 基本信息 final String url = config.getAndRemove(DSKeys.KEY_ALIAS_URL); if (StrUtil.isBlank(url)) { throw new DbRuntimeException("No JDBC URL for group: [{}]", group); } - dbConfig.setUrl(url); + pooledDbConfig.setUrl(url); // 自动识别Driver final String driver = config.getAndRemove(DSKeys.KEY_ALIAS_DRIVER); - dbConfig.setDriver(StrUtil.isNotBlank(driver) ? driver : DriverUtil.identifyDriver(url)); - dbConfig.setUser(config.getAndRemove(DSKeys.KEY_ALIAS_USER)); - dbConfig.setPass(config.getAndRemove(DSKeys.KEY_ALIAS_PASSWORD)); + pooledDbConfig.setDriver(StrUtil.isNotBlank(driver) ? driver : DriverUtil.identifyDriver(url)); + pooledDbConfig.setUser(config.getAndRemove(DSKeys.KEY_ALIAS_USER)); + pooledDbConfig.setPass(config.getAndRemove(DSKeys.KEY_ALIAS_PASSWORD)); // 连接池相关信息 - dbConfig.setInitialSize(setting.getIntByGroup("initialSize", group, 0)); - dbConfig.setMinIdle(setting.getIntByGroup("minIdle", group, 0)); - dbConfig.setMaxActive(setting.getIntByGroup("maxActive", group, 8)); - dbConfig.setMaxWait(setting.getLongByGroup("maxWait", group, 6000L)); + pooledDbConfig.setInitialSize(setting.getIntByGroup("initialSize", group, 0)); + pooledDbConfig.setMinIdle(setting.getIntByGroup("minIdle", group, 0)); + pooledDbConfig.setMaxActive(setting.getIntByGroup("maxActive", group, 8)); + pooledDbConfig.setMaxWait(setting.getLongByGroup("maxWait", group, 6000L)); // remarks等特殊配置,since 5.3.8 String connValue; for (final String key : DSKeys.KEY_CONN_PROPS) { connValue = config.get(key); if(StrUtil.isNotBlank(connValue)){ - dbConfig.addConnProps(key, connValue); + pooledDbConfig.addConnProps(key, connValue); } } - return dbConfig; + return pooledDbConfig; } } diff --git a/hutool-db/src/main/java/org/dromara/hutool/db/ds/pooled/PooledConnection.java b/hutool-db/src/main/java/org/dromara/hutool/db/ds/pooled/PooledConnection.java index 8106058c1..8905ca399 100644 --- a/hutool-db/src/main/java/org/dromara/hutool/db/ds/pooled/PooledConnection.java +++ b/hutool-db/src/main/java/org/dromara/hutool/db/ds/pooled/PooledConnection.java @@ -39,7 +39,7 @@ public class PooledConnection extends ConnectionWrapper { */ public PooledConnection(final PooledDataSource ds) throws SQLException { this.ds = ds; - final DbConfig config = ds.getConfig(); + final PooledDbConfig config = ds.getConfig(); final Props info = new Props(); final String user = config.getUser(); diff --git a/hutool-db/src/main/java/org/dromara/hutool/db/ds/pooled/PooledDSFactory.java b/hutool-db/src/main/java/org/dromara/hutool/db/ds/pooled/PooledDSFactory.java index 8bc8d059a..2250f2ad9 100644 --- a/hutool-db/src/main/java/org/dromara/hutool/db/ds/pooled/PooledDSFactory.java +++ b/hutool-db/src/main/java/org/dromara/hutool/db/ds/pooled/PooledDSFactory.java @@ -51,27 +51,27 @@ public class PooledDSFactory extends AbstractDSFactory { @Override protected DataSource createDataSource(final String jdbcUrl, final String driver, final String user, final String pass, final Setting poolSetting) { - final DbConfig dbConfig = new DbConfig(); - dbConfig.setUrl(jdbcUrl); - dbConfig.setDriver(driver); - dbConfig.setUser(user); - dbConfig.setPass(pass); + final PooledDbConfig pooledDbConfig = new PooledDbConfig(); + pooledDbConfig.setUrl(jdbcUrl); + pooledDbConfig.setDriver(driver); + pooledDbConfig.setUser(user); + pooledDbConfig.setPass(pass); // 连接池相关信息 - dbConfig.setInitialSize(poolSetting.getInt("initialSize", 0)); - dbConfig.setMinIdle(poolSetting.getInt("minIdle", 0)); - dbConfig.setMaxActive(poolSetting.getInt("maxActive", 8)); - dbConfig.setMaxWait(poolSetting.getLong("maxWait", 6000L)); + pooledDbConfig.setInitialSize(poolSetting.getInt("initialSize", 0)); + pooledDbConfig.setMinIdle(poolSetting.getInt("minIdle", 0)); + pooledDbConfig.setMaxActive(poolSetting.getInt("maxActive", 8)); + pooledDbConfig.setMaxWait(poolSetting.getLong("maxWait", 6000L)); // remarks等特殊配置,since 5.3.8 String connValue; for (final String key : DSKeys.KEY_CONN_PROPS) { connValue = poolSetting.get(key); if(StrUtil.isNotBlank(connValue)){ - dbConfig.addConnProps(key, connValue); + pooledDbConfig.addConnProps(key, connValue); } } - return new PooledDataSource(dbConfig); + return new PooledDataSource(pooledDbConfig); } } diff --git a/hutool-db/src/main/java/org/dromara/hutool/db/ds/pooled/PooledDataSource.java b/hutool-db/src/main/java/org/dromara/hutool/db/ds/pooled/PooledDataSource.java index 912c8acd0..0bb7aa53f 100644 --- a/hutool-db/src/main/java/org/dromara/hutool/db/ds/pooled/PooledDataSource.java +++ b/hutool-db/src/main/java/org/dromara/hutool/db/ds/pooled/PooledDataSource.java @@ -35,7 +35,7 @@ public class PooledDataSource extends AbstractDataSource { private Queue freePool; private int activeCount; // 活跃连接数 - private final DbConfig config; + private final PooledDbConfig config; /** * 获得一个数据源 @@ -88,7 +88,7 @@ public class PooledDataSource extends AbstractDataSource { * * @param config 数据库配置 */ - public PooledDataSource(final DbConfig config) { + public PooledDataSource(final PooledDbConfig config) { this.config = config; freePool = new LinkedList<>(); int initialSize = config.getInitialSize(); @@ -136,7 +136,7 @@ public class PooledDataSource extends AbstractDataSource { return new PooledConnection(this); } - public DbConfig getConfig() { + public PooledDbConfig getConfig() { return config; } diff --git a/hutool-db/src/main/java/org/dromara/hutool/db/ds/pooled/PooledDbConfig.java b/hutool-db/src/main/java/org/dromara/hutool/db/ds/pooled/PooledDbConfig.java new file mode 100644 index 000000000..abea846c1 --- /dev/null +++ b/hutool-db/src/main/java/org/dromara/hutool/db/ds/pooled/PooledDbConfig.java @@ -0,0 +1,77 @@ +/* + * Copyright (c) 2023 looly(loolly@aliyun.com) + * Hutool is licensed under Mulan PSL v2. + * You can use this software according to the terms and conditions of the Mulan PSL v2. + * You may obtain a copy of Mulan PSL v2 at: + * https://license.coscl.org.cn/MulanPSL2 + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, + * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, + * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. + * See the Mulan PSL v2 for more details. + */ + +package org.dromara.hutool.db.ds.pooled; + +import org.dromara.hutool.db.ds.simple.DbConfig; + +/** + * 数据库配置 + * + * @author Looly + */ +public class PooledDbConfig extends DbConfig { + + private int initialSize; //初始连接数 + private int minIdle; //最小闲置连接数 + private int maxActive; //最大活跃连接数 + private long maxWait; //获取连接的超时等待 + + /** + * 构造 + */ + public PooledDbConfig() { + } + + /** + * 构造 + * + * @param url jdbc url + * @param user 用户名 + * @param pass 密码 + */ + public PooledDbConfig(final String url, final String user, final String pass) { + super(url, user, pass); + } + + public int getInitialSize() { + return initialSize; + } + + public void setInitialSize(final int initialSize) { + this.initialSize = initialSize; + } + + public int getMinIdle() { + return minIdle; + } + + public void setMinIdle(final int minIdle) { + this.minIdle = minIdle; + } + + public int getMaxActive() { + return maxActive; + } + + public void setMaxActive(final int maxActive) { + this.maxActive = maxActive; + } + + public long getMaxWait() { + return maxWait; + } + + public void setMaxWait(final long maxWait) { + this.maxWait = maxWait; + } +} diff --git a/hutool-db/src/main/java/org/dromara/hutool/db/ds/pooled/DbConfig.java b/hutool-db/src/main/java/org/dromara/hutool/db/ds/simple/DbConfig.java similarity index 64% rename from hutool-db/src/main/java/org/dromara/hutool/db/ds/pooled/DbConfig.java rename to hutool-db/src/main/java/org/dromara/hutool/db/ds/simple/DbConfig.java index fd85fe873..3927dae30 100644 --- a/hutool-db/src/main/java/org/dromara/hutool/db/ds/pooled/DbConfig.java +++ b/hutool-db/src/main/java/org/dromara/hutool/db/ds/simple/DbConfig.java @@ -10,7 +10,7 @@ * See the Mulan PSL v2 for more details. */ -package org.dromara.hutool.db.ds.pooled; +package org.dromara.hutool.db.ds.simple; import org.dromara.hutool.db.DbRuntimeException; import org.dromara.hutool.db.driver.DriverUtil; @@ -24,22 +24,17 @@ import java.util.Properties; */ public class DbConfig { - //-------------------------------------------------------------------- Fields start private String driver; //数据库驱动 private String url; //jdbc url private String user; //用户名 private String pass; //密码 - private int initialSize; //初始连接数 - private int minIdle; //最小闲置连接数 - private int maxActive; //最大活跃连接数 - private long maxWait; //获取连接的超时等待 - // 连接配置 private Properties connProps; - //-------------------------------------------------------------------- Fields end - //-------------------------------------------------------------------- Constructor start + /** + * 构造 + */ public DbConfig() { } @@ -53,7 +48,6 @@ public class DbConfig { public DbConfig(final String url, final String user, final String pass) { init(url, user, pass); } - //-------------------------------------------------------------------- Constructor end /** * 初始化 @@ -74,7 +68,6 @@ public class DbConfig { } } - //-------------------------------------------------------------------- Getters and Setters start public String getDriver() { return driver; } @@ -107,38 +100,6 @@ public class DbConfig { this.pass = pass; } - public int getInitialSize() { - return initialSize; - } - - public void setInitialSize(final int initialSize) { - this.initialSize = initialSize; - } - - public int getMinIdle() { - return minIdle; - } - - public void setMinIdle(final int minIdle) { - this.minIdle = minIdle; - } - - public int getMaxActive() { - return maxActive; - } - - public void setMaxActive(final int maxActive) { - this.maxActive = maxActive; - } - - public long getMaxWait() { - return maxWait; - } - - public void setMaxWait(final long maxWait) { - this.maxWait = maxWait; - } - public Properties getConnProps() { return connProps; } @@ -153,5 +114,4 @@ public class DbConfig { } this.connProps.setProperty(key, value); } - //-------------------------------------------------------------------- Getters and Setters end } diff --git a/hutool-db/src/main/java/org/dromara/hutool/db/ds/simple/SimpleDSFactory.java b/hutool-db/src/main/java/org/dromara/hutool/db/ds/simple/SimpleDSFactory.java index f74053ea6..868238500 100644 --- a/hutool-db/src/main/java/org/dromara/hutool/db/ds/simple/SimpleDSFactory.java +++ b/hutool-db/src/main/java/org/dromara/hutool/db/ds/simple/SimpleDSFactory.java @@ -49,13 +49,10 @@ public class SimpleDSFactory extends AbstractDSFactory { @Override protected DataSource createDataSource(final String jdbcUrl, final String driver, final String user, final String pass, final Setting poolSetting) { - final SimpleDataSource ds = new SimpleDataSource(// - jdbcUrl, // - user, // - pass, // - driver// - ); - ds.setConnProps(poolSetting.getProps(Setting.DEFAULT_GROUP)); - return ds; + final DbConfig dbConfig = new DbConfig(jdbcUrl, user, pass); + dbConfig.setDriver(driver); + dbConfig.setConnProps(poolSetting.getProps(Setting.DEFAULT_GROUP)); + + return new SimpleDataSource(dbConfig); } } diff --git a/hutool-db/src/main/java/org/dromara/hutool/db/ds/simple/SimpleDataSource.java b/hutool-db/src/main/java/org/dromara/hutool/db/ds/simple/SimpleDataSource.java index 2f4ed5dda..625179a95 100644 --- a/hutool-db/src/main/java/org/dromara/hutool/db/ds/simple/SimpleDataSource.java +++ b/hutool-db/src/main/java/org/dromara/hutool/db/ds/simple/SimpleDataSource.java @@ -36,22 +36,14 @@ public class SimpleDataSource extends AbstractDataSource { /** 默认的数据库连接配置文件路径 */ public final static String DEFAULT_DB_CONFIG_PATH = "config/db.setting"; - // -------------------------------------------------------------------- Fields start - private String driver; // 数据库驱动 - private String url; // jdbc url - private String user; // 用户名 - private String pass; // 密码 - - // 连接配置 - private Properties connProps; - // -------------------------------------------------------------------- Fields end + private final DbConfig config; // -------------------------------------------------------------------- Constructor start /** * 构造 */ public SimpleDataSource() { - this(null); + this(StrUtil.EMPTY); } /** @@ -73,150 +65,74 @@ public class SimpleDataSource extends AbstractDataSource { if (null == setting) { setting = new Setting(DEFAULT_DB_CONFIG_PATH); } - final Setting config = setting.getSetting(group); - if (MapUtil.isEmpty(config)) { + final Setting dbSetting = setting.getSetting(group); + if (MapUtil.isEmpty(dbSetting)) { throw new DbRuntimeException("No DataSource config for group: [{}]", group); } - init(// - config.getAndRemove(DSKeys.KEY_ALIAS_URL), // - config.getAndRemove(DSKeys.KEY_ALIAS_USER), // - config.getAndRemove(DSKeys.KEY_ALIAS_PASSWORD), // - config.getAndRemove(DSKeys.KEY_ALIAS_DRIVER)// - ); + final DbConfig dbConfig = new DbConfig(); - // 其它连接参数 - this.connProps = config.getProps(Setting.DEFAULT_GROUP); + // 基本信息 + final String url = dbSetting.getAndRemove(DSKeys.KEY_ALIAS_URL); + if (StrUtil.isBlank(url)) { + throw new DbRuntimeException("No JDBC URL for group: [{}]", group); + } + dbConfig.setUrl(url); + + // 自动识别Driver + final String driver = dbSetting.getAndRemove(DSKeys.KEY_ALIAS_DRIVER); + dbConfig.setDriver(StrUtil.isNotBlank(driver) ? driver : DriverUtil.identifyDriver(url)); + dbConfig.setUser(dbSetting.getAndRemove(DSKeys.KEY_ALIAS_USER)); + dbConfig.setPass(dbSetting.getAndRemove(DSKeys.KEY_ALIAS_PASSWORD)); + + // remarks等特殊配置,since 5.3.8 + String connValue; + for (final String key : DSKeys.KEY_CONN_PROPS) { + connValue = dbSetting.get(key); + if(StrUtil.isNotBlank(connValue)){ + dbConfig.addConnProps(key, connValue); + } + } + + this.config = dbConfig; } /** * 构造 * - * @param url jdbc url - * @param user 用户名 - * @param pass 密码 + * @param config 数据库连接配置 */ - public SimpleDataSource(final String url, final String user, final String pass) { - init(url, user, pass); - } - - /** - * 构造 - * - * @param url jdbc url - * @param user 用户名 - * @param pass 密码 - * @param driver JDBC驱动类 - * @since 3.1.2 - */ - public SimpleDataSource(final String url, final String user, final String pass, final String driver) { - init(url, user, pass, driver); + public SimpleDataSource(final DbConfig config) { + this.config = config; } // -------------------------------------------------------------------- Constructor end - /** - * 初始化 - * - * @param url jdbc url - * @param user 用户名 - * @param pass 密码 - */ - public void init(final String url, final String user, final String pass) { - init(url, user, pass, null); - } - - /** - * 初始化 - * - * @param url jdbc url - * @param user 用户名 - * @param pass 密码 - * @param driver JDBC驱动类,传入空则自动识别驱动类 - * @since 3.1.2 - */ - public void init(final String url, final String user, final String pass, final String driver) { - this.driver = StrUtil.isNotBlank(driver) ? driver : DriverUtil.identifyDriver(url); - try { - Class.forName(this.driver); - } catch (final ClassNotFoundException e) { - throw new DbRuntimeException(e, "Get jdbc driver [{}] error!", driver); - } - this.url = url; - this.user = user; - this.pass = pass; - } - - // -------------------------------------------------------------------- Getters and Setters start - public String getDriver() { - return driver; - } - - public void setDriver(final String driver) { - this.driver = driver; - } - - public String getUrl() { - return url; - } - - public void setUrl(final String url) { - this.url = url; - } - - public String getUser() { - return user; - } - - public void setUser(final String user) { - this.user = user; - } - - public String getPass() { - return pass; - } - - public void setPass(final String pass) { - this.pass = pass; - } - - public Properties getConnProps() { - return connProps; - } - - public void setConnProps(final Properties connProps) { - this.connProps = connProps; - } - - public void addConnProps(final String key, final String value){ - if(null == this.connProps){ - this.connProps = new Properties(); - } - this.connProps.setProperty(key, value); - } - // -------------------------------------------------------------------- Getters and Setters end - @Override public Connection getConnection() throws SQLException { + final DbConfig config = this.config; final Props info = new Props(); - if (this.user != null) { - info.setProperty("user", this.user); + + final String user = config.getUser(); + if (user != null) { + info.setProperty("user", user); } - if (this.pass != null) { - info.setProperty("password", this.pass); + final String pass = config.getPass(); + if (pass != null) { + info.setProperty("password", pass); } // 其它参数 - final Properties connProps = this.connProps; + final Properties connProps = config.getConnProps(); if(MapUtil.isNotEmpty(connProps)){ info.putAll(connProps); } - return DriverManager.getConnection(this.url, info); + return DriverManager.getConnection(config.getUrl(), info); } @Override public Connection getConnection(final String username, final String password) throws SQLException { - return DriverManager.getConnection(this.url, username, password); + return DriverManager.getConnection(config.getUrl(), username, password); } @Override