DBCP是Apache提供的数据库连接池,Hibernate3.0之后不再提供支持DBCP连接池;
先导包,除了数据库驱动包以外,还要下面三个:
配置文件:
我的配置文件是放在src下的,也可以放在项目路径下,但是待会儿获取流的时候注意文件路径就好;
dbcp.properties:
driverClassName=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/mydb?serverTimezone=GMT%2b8&characterEncoding=utf8
username=root
password=123
#初始化连接数
initialSize=10
#最大连接数量
maxActive=50
#最大空闲连接
maxIdle=20
#最小空闲连接数
minIdle=5
#最长等待时间
maxWait=60000
#指定由连接池所创建的连接的自动提交(auto-commit)状态。
defaultAutoCommit=true
#driver default 指定由连接池所创建的连接的事务级别(TransactionIsolation)。
#可用值为下列之一:NONE,READ_UNCOMMITTED, READ_COMMITTED, REPEATABLE_READ, SERIALIZABLE
defaultTransactionIsolation=READ_UNCOMMITTED
测试代码:
package cn.melo.demo;
import java.io.FileInputStream;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.util.Properties;
import org.apache.commons.dbcp2.BasicDataSource;
import org.apache.commons.dbcp2.BasicDataSourceFactory;
import org.junit.Test;
public class DBCPDemo {
@Test
public void testDBCP() throws Exception {
//先把配置文件加载进来
InputStream in = new FileInputStream("src/dbcp.properties");
Properties prop = new Properties();
prop.load(in);
//用Properties来获取BasicDataSource的对象
BasicDataSource bds = BasicDataSourceFactory.createDataSource(prop);
//得到连接
Connection conn = bds.getConnection();
String sql = "SELECT * FROM student";
PreparedStatement preStmt = conn.prepareStatement(sql);
ResultSet rs = preStmt.executeQuery();
while(rs.next()) {
ResultSetMetaData metaData = rs.getMetaData();
int cols = metaData.getColumnCount();
for(int i = 1; i < cols; i++) {
System.out.print(rs.getString(i)+"\t");
}
System.out.println();
}
}
}