Java|Java 数据库连接池DBPool 介绍
目录
- 1、配置参数
- 2、使用
- 2.1、直接使用
- 2.1.1、引入依赖
- 2.1.2、使用例子
- 2.2、在 SpringBoot 中使用
- 2.1.1、引入依赖
- 2.1.2、单数据源
- 2.1.3、多数据源
DBPool
是一个高效易配置的数据库连接池,支持 JDBC 4.2,但目前已经不维护了;本文简单介绍下 DBPool 的使用,文中使用到的软件版本:Java 1.8.0_191、DBPool 7.0.1、Spring Boot 2.3.12.RELEASE。1、配置参数
参数 | 描述 |
name | 连接池名称 |
description | 描述 |
driverClassName | 驱动名称 |
url | 连接 url |
user | 用户名 |
password | 密码 |
passwordDecoderClassName | 密码解密类名,需实现 snaq.db.PasswordDecoder 接口,需要有无参构造方法 |
minPool | 连接池最小连接数 |
maxPool | 连接池最大连接数 |
maxSize | 可以创建的最大连接数 |
idleTimeout | 空闲连接数最大存活时间(秒),0 表示无限制 |
loginTimeout | 创建连接的超时时间(秒) |
validatorClassName | 校验类名,需实现 snaq.db.ConnectionValidator 接口,需要有无参构造方法 |
validatorQuery | 校验查询语句 |
2、使用
2.1、直接使用
2.1.1、引入依赖
net.snaq dbpool7.0.1
2.1.2、使用例子
package com.abc.demo.general.dbpool; import snaq.db.DBPoolDataSource; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class DBPoolCase {public static void main(String[] args) {DBPoolDataSource dbPoolDataSource = new DBPoolDataSource(); dbPoolDataSource.setName("DBPool连接池"); dbPoolDataSource.setDescription("DBPool连接池测试"); dbPoolDataSource.setDriverClassName("com.mysql.cj.jdbc.Driver"); dbPoolDataSource.setUrl("jdbc:mysql://10.40.9.11:3306/mydb?useUnicode=true&characterEncoding=UTF-8"); dbPoolDataSource.setUser("root"); dbPoolDataSource.setPassword("123456"); dbPoolDataSource.setMinPool(5); dbPoolDataSource.setMaxPool(10); dbPoolDataSource.setMaxSize(30); dbPoolDataSource.setIdleTimeout(3600); dbPoolDataSource.setLoginTimeout(60); dbPoolDataSource.setValidationQuery("select 1"); Connection connection = null; try {connection = dbPoolDataSource.getConnection(); Statement st = connection.createStatement(); ResultSet rs = st.executeQuery("select version()"); if (rs.next()) {System.out.println(rs.getString(1)); }} catch (SQLException e) {e.printStackTrace(); } finally {close(connection); }//实际使用中一般是在应用启动时初始化数据源,应用从数据源中获取连接;并不会关闭数据源。dbPoolDataSource.release(); }private static void close(Connection connection) {if (connection != null) {try {connection.close(); } catch (SQLException e) {e.printStackTrace(); }}}}
2.2、在 SpringBoot 中使用
2.1.1、引入依赖
org.springframework.boot spring-boot-starter-parent2.3.12.RELEASE org.springframework.boot spring-boot-starter-weborg.springframework spring-jdbcnet.snaq dbpool7.0.1 mysql mysql-connector-java
2.1.2、单数据源 application.yml 配置:
spring:datasource:dbpool:name: DBPool连接池description: DBPool连接池测试driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://10.40.9.11:3306/myDb?useUnicode=true&characterEncoding=UTF-8user: rootpassword: 123456min-pool: 5max-pool: 10max-size: 30idle-timeout: 3600login-timeout: 60validator-query: select 1
数据源配置类:
package com.abc.demo.config; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.jdbc.DataSourceBuilder; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import snaq.db.DBPoolDataSource; import javax.sql.DataSource; @Configurationpublic class DataSourceConfig {@Bean("dataSource")@ConfigurationProperties(prefix = "spring.datasource.dbpool")public DataSource dataSource() {return DataSourceBuilder.create().type(DBPoolDataSource.class).build(); }}
使用:
@Autowiredprivate DataSource dataSource;
2.1.3、多数据源 application.yml 配置:
spring:datasource:dbpool:db1:name: DBPool连接池1description: DBPool连接池测试1driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://10.40.9.11:3306/mydb?useUnicode=true&characterEncoding=UTF-8user: rootpassword: 123456min-pool: 5max-pool: 10max-size: 30idle-timeout: 3600login-timeout: 60validator-query: select 1db2:name: DBPool连接池2description: DBPool连接池测试2driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://10.40.9.12:3306/mydb?useUnicode=true&characterEncoding=UTF-8user: rootpassword: 123456min-pool: 5max-pool: 10max-size: 30idle-timeout: 3600login-timeout: 60validator-query: select 1
数据源配置类:
package com.abc.demo.config; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.jdbc.DataSourceBuilder; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import snaq.db.DBPoolDataSource; import javax.sql.DataSource; @Configurationpublic class DataSourceConfig {@Bean("dataSource1")@ConfigurationProperties(prefix = "spring.datasource.dbpool.db1")public DataSource dataSource1() {return DataSourceBuilder.create().type(DBPoolDataSource.class).build(); }@Bean("dataSource2")@ConfigurationProperties(prefix = "spring.datasource.dbpool.db2")public DataSource dataSource2() {return DataSourceBuilder.create().type(DBPoolDataSource.class).build(); }}
使用:
@Autowired@Qualifier("dataSource1")private DataSource dataSource1; @Autowired@Qualifier("dataSource2")private DataSource dataSource2;
【Java|Java 数据库连接池DBPool 介绍】到此这篇关于 Java 数据库连接池DBPool 介绍的文章就介绍到这了,更多相关 Java 连接池DBPool 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
推荐阅读
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- Docker应用:容器间通信与Mariadb数据库主从复制
- 事件代理
- Java|Java OpenCV图像处理之SIFT角点检测详解
- java中如何实现重建二叉树
- 数组常用方法一
- 【Hadoop踩雷】Mac下安装Hadoop3以及Java版本问题
- Java|Java基础——数组
- RxJava|RxJava 在Android项目中的使用(一)
- java之static、static|java之static、static final、final的区别与应用