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);
}
}