Java类:team.bangbang.common.sql.SQLPool

如果一个项目中需要直接使用JDBC编程,则可以使用本类。 本类使用Druid构造的数据库连接池,支持多数据库,详情参见Java doc。

配置说明

多数据库的配置

# 数据库连接配置。可以使用不同的顶级节点名称配置多个数据库连接。
# 顶级节点名称即为数据库连接别名,默认数据库连接别名:application
application:
  druid:
    url: "jdbc:mysql://192.168.0.200:3306/db1?useUnicode=true&characterEncoding=UTF-8"
    driver-class: "com.mysql.jdbc.Driver"
    username: user1
    password: password1
    initial-size: 1
    min-idle: 1
    max-active: 5
    maxWait: 10
    timeBetweenEvictionRunsMillis: 60000
    minEvictableIdleTimeMillis: 300000
    validationQuery: "SELECT 'x'"
    testWhileIdle: true
    testOnReturn: false
    testOnBorrow: true

second:
  druid:
    url: "jdbc:mysql://192.168.0.200:3306/db2?useUnicode=true&characterEncoding=UTF-8"
    driver-class: "com.mysql.jdbc.Driver"
    username: user2
    password: password2
    initial-size: 1
    min-idle: 1
    max-active: 5
    maxWait: 10
    timeBetweenEvictionRunsMillis: 60000
    minEvictableIdleTimeMillis: 300000
    validationQuery: "SELECT 'x'"
    testWhileIdle: true
    testOnReturn: false
    testOnBorrow: true

以上配置了2个数据库,别名分别为“application”、“second”,使用别名,可以调用SQLPool获得不同数据库的DataSource和Connection,具体调用方法参见Java Doc文档。

DataSource的获取

目的

为了让Spring环境集成bangbang共通类,通过bangbang共通类获得DataSource,避免在一个工程中分别按照bangbang、spring的配置格式要求重复配置数据库参数。

实现方式

使用 SQLPool.getDataSource()获取DataSource,将获取的DataSource放入Spring的bean池。

/**
 * Druid的数据源配置
 *
 * @author Bangbang
 * @version 1.0  2021年1月25日
 */
@Configuration
@AutoConfigureBefore(DataSourceAutoConfiguration.class)
public class DruidAutoConfiguration {
    /**
     * @return 数据源
     */
    @Bean
    @Primary
    public DataSource dataSource() {
        try {
            return SQLPool.getDataSource();
        } catch (SQLException e) {
            e.printStackTrace();
        }

        return null;
    }

    /**
     * 使用数据源创建jdbcTemplate
     * 
     * @param keyDataSource 数据源
     * @return jdbcTemplate对象
     */
    @Bean(name = "jdbcTemplate")
    public JdbcTemplate keyJdbcTemplate(DataSource keyDataSource) {
        return new JdbcTemplate(keyDataSource);
    }
}