本教程仅限于 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规则一般,所以我们想要使用表示&符号的转义字符&amp;来替换&符号

<?xml version="1.0" encoding="UTF-8">
<c3p0-config>
    <default-config>
        <property name="driverClass"></property>
        <property name="jdbcUrl">jdbc:mysql://localhost:3306/数据库名?useUnicode=true&amp;characterEncoding=utf8&amp;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/
版权声明:本文为博主原创文章,转载请注明原文链接作者信息