diff --git a/code/base-project/base-springboot/src/main/java/cn/g3soft/config/datasource/DataSourceManager.java b/code/base-project/base-springboot/src/main/java/cn/g3soft/config/datasource/DataSourceManager.java index b7ddd4ac..e14253d3 100644 --- a/code/base-project/base-springboot/src/main/java/cn/g3soft/config/datasource/DataSourceManager.java +++ b/code/base-project/base-springboot/src/main/java/cn/g3soft/config/datasource/DataSourceManager.java @@ -5,6 +5,8 @@ import com.alibaba.druid.filter.Filter; import com.alibaba.druid.pool.DruidDataSource; import com.alibaba.druid.wall.WallConfig; import com.alibaba.druid.wall.WallFilter; +import com.zaxxer.hikari.HikariConfig; +import com.zaxxer.hikari.HikariDataSource; import org.springframework.core.io.Resource; import org.springframework.core.io.ResourceLoader; import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource; @@ -81,7 +83,9 @@ public class DataSourceManager extends AbstractRoutingDataSource { DriverManager.getConnection(newConfig.getUrl(), newConfig.getUsername(), newConfig.getPassword()).close(); // 创建并初始化新的 DruidDataSource 实例 - DruidDataSource newDS = buildDruidDataSource(newConfig); +// DruidDataSource newDS = buildDruidDataSource(newConfig); + // 创建并初始化新的 HikariDataSource 实例 + HikariDataSource newDS = buildHikariDataSource(newConfig); // 放入数据源映射中,替换旧数据源(或新增) targetDataSourceMap.put(key, newDS); @@ -124,6 +128,17 @@ public class DataSourceManager extends AbstractRoutingDataSource { } } + private HikariDataSource buildHikariDataSource(DataSourceConfig.DbConfig config){ + HikariConfig hikariConfig = new HikariConfig(); + hikariConfig.setDriverClassName(config.getDriverClassName()); + hikariConfig.setJdbcUrl(config.getUrl()); + hikariConfig.setUsername(config.getUsername()); + hikariConfig.setPassword(config.getPassword()); + hikariConfig.setConnectionTestQuery("SELECT 1"); // SQL Server 可执行语句 + + return new HikariDataSource(hikariConfig); + } + private DruidDataSource buildDruidDataSource(DataSourceConfig.DbConfig config) throws Exception { DruidDataSource ds = getDefaultDruidDataSource(); diff --git a/code/base-project/base-springboot/src/main/java/cn/g3soft/controller/TestController.java b/code/base-project/base-springboot/src/main/java/cn/g3soft/controller/TestController.java index 2a8c4c28..f9b494a9 100644 --- a/code/base-project/base-springboot/src/main/java/cn/g3soft/controller/TestController.java +++ b/code/base-project/base-springboot/src/main/java/cn/g3soft/controller/TestController.java @@ -40,7 +40,6 @@ public class TestController { String sql = "SELECT * FROM sys_admin"; // 执行查询,返回List,每个Map代表一行记录,列名-值对 List> result = jdbcTemplate.queryForList(sql); - // 查询完后可以清理上下文,防止影响后续操作 DataSourceContextHolder.clearDataSourceKey();