C3P0数据库连接池技术
本教程仅限于
c3p0v0.9.5.2
+mysql8.0
+jdk1.8
一、在pom.xml中加入C3P0依赖文件
如果是普通项目,需要解决依赖问题,c3p0的jar包依赖于mchange-common的jar包
<!-- https://mvnrepository.com/artifact/com.mchange/c3p0 -->
<dependency>
<groupId>com.mchange</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.5.2</version>
</dependency>
二、书写配置文件
1. 严格按照规定命名为 c3p0.properties
文件
这里需要注意和通常的不一样的是需要在每个key前加c3p0
c3p0.driverClass=com.mysql.cj.jdbc.Driver
c3p0.jdbcUrl=jdbc:mysql://localhost:3306/数据库名?useUnicode=true&characterEncoding=utf8&serverTimeZone=UTC
c3p0.user=root
c3p0.password=123456
c3p0.initialPoolSize=10
c3p0.maxPoolSize=100
c3p0.checkoutTimeout=3000
2. 严格按照规定命名为 c3p0-config.xml
文件
这里需要注意一个地方就是jdbcUrl里本来用来连接各个参数的&符号在xml文件中会被转义就如同html规则一般,所以我们想要使用表示&符号的转义字符&来替换&符号
<?xml version="1.0" encoding="UTF-8">
<c3p0-config>
<default-config>
<property name="driverClass"></property>
<property name="jdbcUrl">jdbc:mysql://localhost:3306/数据库名?useUnicode=true&characterEncoding=utf8&serverTimeZone=UTC</property>
<property name="user">root</property>
<property name="password">123456</property>
<property name="initialPoolSize">10</property>
<property name="maxPoolSize">100</property>
<property name="checkoutTimeout">3000</property>
</default-config>
</c3p0-config>
本教程以Idea工具为例,所以如果是普通Java项目,请将配置文件置于src目录下,若是Maven管理的项目,请直接将配置文件置于resources目录下,具体原因详见JDBC篇
三、书写代码,测试正常的数据连接对象的获取
为了方便看代码,我不去捕获,直接将SQL异常抛出。
public class C3P0Demo{
public static void main(String[] args){
DataSource ds = new ComboPooledDataSource();
Connection conn = null;
for(int i = 0;i < 20;i++){
System.out.println(ds.getConnection());
}
}
}
四、进行一些CRUD操作
public class C3P0Demo{
public static void main(String[] args){
DataSource ds = new ComboPooledDataSource();
Connection conn = ds.getConnection();
String sql = "select * from user";
PreparedStatement pstat = conn.prepareStatement();
ResultSet rs = pstat.executeQuery();
while(rs.next()){
System.out.println(rs.getInt("id")+"\t"+rs.getString("name")+"\t"+rs.getInt("age")+"\t"+rs.getString("gender")+"\t");
}
}
}
原文作者:絷缘
作者邮箱:zhiyuanworkemail@163.com
原文地址:https://zhiyuandnc.github.io/c3p0/
版权声明:本文为博主原创文章,转载请注明原文链接作者信息