dbcp、c3p0、druid三种数据库连接池的用法
dbcp
1.在maven项目中,pom.xml文件中添加dbcp依赖,版本可在maven官网查找最新版本。
commons-dbcp
commons-dbcp
1.4
2.在resources目录下创建对应的dbcp.properties文件,进行相应的参数配置,参数除了上面固定的四个,其他可查阅资料查找你所需要的参数进行配置。
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/jdbc
user=root
password=gzq000913
maxActive=150
minIdle=5
maxIdle=20
initialSize=30
logAbandoned=true
removeAbandoned=true
removeAbandonedTimeout=10
maxWait=1000
timeBetweenEvictionRunsMillis=10000
numTestsPerEvictionRun=10
minEvictableIdleTimeMillis=10000
3.创建对应的DBCPPool类,加载dbcp.properties文件,创建对应的数据源,就可以使用了
import org.apache.commons.dbcp.BasicDataSource;
import org.apache.commons.dbcp.BasicDataSourceFactory;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Properties;
/**
* DBCPPool类
*/
public class DBCPPool {
static{
//创建properties实例
Properties properties = new Properties();
try {
//加载dbcp.properties文件内容
properties.load(DBCPPool.class.getClassLoader().
getResourceAsStream("dbcp.properties"));
//用BasicDataSourceFactory创建数据源
DataSource dataSource = BasicDataSourceFactory.
createDataSource(properties);
//以下就是正常的连接使用
Connection connection = dataSource.
getConnection();
PreparedStatement pstat = connection.
prepareStatement
("show variables like 'basedir'");
ResultSet rs = pstat.executeQuery();
while (rs.next()){
String name = rs.getString("variable_name");
String value = rs.getString("value");
System.out.println(name + " " + value);
}
rs.close();
pstat.close();
connection.close();
} catch (Exception e) {
e.printStackTrace();
}
}
//主函数测试
public static void main(String[] args){
new DBCPPool();
}
}
c3p0
1.在maven项目中,pom.xml文件中添加c3p0依赖,版本可在maven官网查找最新版本。
com.mchange
c3p0
0.9.5.5
2.在resources目录下创建对应的c3p0-config.xml文件,进行相应的参数配置,其他可查阅资料查找你所需要的参数进行配置。
com.mysql.jdbc.Driver
jdbc:mysql://localhost:3306/jdbc
root
gzq000913
10
10
2
2
3.创建对应的C3P0Pool类,用ComboPooledDataSource("myC3p0")创建对应名称的数据源,就可以使用了
import com.mchange.v2.c3p0.ComboPooledDataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
/**
* C3P0Pool类
*/
public class C3P0Pool {
static {
//用ComboPooledDataSource获取数据源
ComboPooledDataSource dataSource = new ComboPooledDataSource("myC3p0");
try {
//下面就是正常使用
Connection connection = dataSource.
getConnection();
PreparedStatement pstat = connection.
prepareStatement
("show variables like 'basedir'");
ResultSet rs = pstat.executeQuery();
while (rs.next()){
String name = rs.getString("variable_name");
String value = rs.getString("value");
System.out.println(name + " " + value);
}
rs.close();
pstat.close();
connection.close();
} catch (Exception e) {
e.printStackTrace();
}
}
//主函数测试
public static void main(String[] args){
new C3P0Pool();
}
}
druid
druid是现在最普遍最好用的连接池,是阿里巴巴开源的,可以在github上搜索到它的使用文档以及源代码
1.在maven项目中,pom.xml文件中添加druid依赖,版本可在maven官网查找最新版本。
com.alibaba
druid
1.1.21
2.在resources目录下创建对应的druid.properties文件,进行相应的参数配置,参数除了上面固定的四个,其他可查阅资料查找你所需要的参数进行配置。
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/jdbc
user=root
password=gzq000913
# 初始化大小
initialSize=5
# 最小空闲数
minIdle=10
# 最大活跃数
maxActive=20
# 获取连接的等待时间
maxWait=10000
# 间隔多长时间 检测是否关闭空闲连接 单位是毫秒
timeBetweenEvictionRunsMillis=2000
# 控制一个连接在资源池中 最大或最小的生存时间 单位也是毫秒
minEvictableIdleTimeMillis=600000
maxEvictableIdleTimeMillis=900000
3.创建对应的DruidPool类,加载druid.properties文件,创建对应的数据源,就可以使用了
import com.alibaba.druid.pool.DruidDataSourceFactory;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Properties;
/**
*DruidPool类
*/
public class DruidPool {
static {
//创建properties实例
Properties properties = new Properties();
try {
properties.load(DruidPool.class.
getClassLoader().
getResourceAsStream
("druid.properties"));
//用DruidDataSourceFactory创建数据源
DataSource dataSource = DruidDataSourceFactory.
createDataSource(properties);
//以下就是正常使用了
Connection connection = dataSource.
getConnection();
PreparedStatement pstat = connection.
prepareStatement
("show variables like 'basedir'");
ResultSet rs = pstat.executeQuery();
while (rs.next()){
String name = rs.getString("variable_name");
String value = rs.getString("value");
System.out.println(name + " " + value);
}
rs.close();
pstat.close();
connection.close();
} catch (Exception e) {
e.printStackTrace();
}
}
//主函数测试
public static void main(String[] args){
new DruidPool();
}
}