手写数据库连接池(java)
我前几天学习了数据库连接池的基本内容,自己尝试着写了一个连接池并导出jar包使用,虽然实现了连接池的基本功能,但也存在一些问题。
以下是我连接池的目录结构:
配置文件内容:
#驱动路径
driver=com.mysql.jdbc.Driver
#JDBC连接URL
url=jdbc:mysql://127.0.0.1:3306/exercise?characterEncoding=utf8&useSSL=true
#账号
username=root
#密码
password=root
#初始连接池大小
initPoolSize=10
#最小连接数
minPoolSize=10
#最大连接数
maxPoolSize=50
#最大空闲时间
maxIdleTime=100000
#默认自动增长连接数
defaultGrow=5
连接池的三个主要实现类的代码:
package myConnectionPool;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
/**
* 连接类
* 保存单个数据库连接
* 记录该连接开始空闲时间和目前空闲时间
*/
public class WSConnection {
/**
* 数据库连接
*/
private Connection connection=null;
/**
* 开始空闲时间
*/
private long startIdleTime;
/**
* 目前空闲时间
*/
private long nowIdleTime;
/**
* 构造函数
* 获得数据库连接和该连接的开始空闲时间
*/
public WSConnection(String driver, String url, String username, String password){
try {
Class.forName(driver);
connection = DriverManager.getConnection(url, username, password);
startIdleTime=System.currentTimeMillis();
} catch (Exception e) {
System.out.println("连接获取失败!");
System.exit(0);
}
}
public WSConnection(Connection connection){
this.connection=connection;
startIdleTime=System.currentTimeMillis();
}
/**
* 提供获得数据库连接的方法
*/
public Connection getConnection() {
return connection;
}
/**
* 提供设置开始空闲时间的方法
*/
public void setStartIdleTime() {
this.startIdleTime = System.currentTimeMillis();
}
/**
* 提供获得目前空闲时间的方法
*/
public long getNowIdleTime() {
nowIdleTime=System.currentTimeMillis()-this.startIdleTime;
return nowIdleTime;
}
/**
* 提供