jdbc C3P0连接池


需要的jar包:

package demo;

import java.beans.PropertyVetoException;
import java.sql.Connection;

import org.junit.Test;

import com.mchange.v2.c3p0.ComboPooledDataSource;

public class C3p0 {
    @Test
    public void fun1() throws Exception {
        // 创建连接池对象
        ComboPooledDataSource ds = new ComboPooledDataSource();
        // 四大参数
        ds.setDriverClass("com.mysql.jdbc.Driver");
        ds.setJdbcUrl("jdbc:mysql://localhost:3306/db1");
        ds.setUser("root");
        ds.setPassword("747699");
        
        // 池配置
        ds.setAcquireIncrement(5);    // 自增数
        ds.setInitialPoolSize(20);    // 初始容量
        ds.setMinPoolSize(2); // 最小连接数
        ds.setMaxPoolSize(50);    // 最大连接
        
        Connection conn = ds.getConnection();    // 获取连接
        System.out.println(conn);
        conn.close();    // 归还连接
    }
}

配置文件

配置文件必须命名为c3p0-config.xml并且放在src目录下

<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>  
          
      <default-config>      
      
        <property name="driverClass">com.mysql.jdbc.Driverproperty>    
        <property name="jdbcUrl">jdbc:mysql://localhost:3306/db1property>    
        <property name="user">rootproperty>    
        <property name="password">123456property>    
        
        <property name="initialPoolSize">10property>    
        <property name="maxIdleTime">30property>    
        <property name="maxPoolSize">100property>    
        <property name="minPoolSize">10property>    
      default-config>    
    
      <named-config name="myApp">    
        <property name="user">rootproperty>    
        <property name="password">123456property>    
        <property name="driverClass">com.mysql.jdbc.Driverproperty>    
        <property name="jdbcUrl">jdbc:mysql:///usersproperty>    
    
        <property name="initialPoolSize">10property>    
        <property name="maxIdleTime">30property>    
        <property name="maxPoolSize">100property>    
        <property name="minPoolSize">10property>    
      named-config>    
c3p0-config>

代码测试:

// 使用配置文件创建池
    @Test
    public void fun2() throws Exception {
        // 创建池
        ComboPooledDataSource ds = new ComboPooledDataSource();
        // 命名创建池
        
        // 获取连接
        Connection conn = ds.getConnection();
        System.out.println(conn);
        conn.close(); // 归还连接
    }

如果在使用配置文件创建池的时候,后面又自定义了配置,那么后面的自定义的配置会覆盖配置文件的配置。

因为在创建的时候就是读取配置文件中的配置,后面自定义的将会覆盖读取的配置。