C3P0数据源配置

一:添加依赖

<dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>${mysql.version}</version>
        </dependency>
<dependency>
            <groupId>com.mchange</groupId>
            <artifactId>c3p0</artifactId>
            <version>${c3p0.version}</version>
        </dependency>

二:添加配置默认二种方式配置文件,XML。在源码com.mchange.v2.c3p0.cfg包下

2.1:c3p0.properties

driverClassName=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/test
username=root
password=

initialPoolSize=10
maxIdleTime=50
maxPoolSize=20
minPoolSize=5

2.2:c3p0-config.xml

<?xml version="1.0" encoding="UTF-8"?>
 
<c3p0-config>
  <default-config>   
    <property name="driverClass">com.mysql.jdbc.Driver</property>
    <property name="jdbcUrl">jdbc:mysql://localhost:3306/dev</property>
    <property name="user">root</property>
    <property name="password"></property>
 
    <property name="initialPoolSize">10</property>
    <property name="maxIdleTime">30</property>
    <property name="maxPoolSize">100</property>
    <property name="minPoolSize">10</property>
  </default-config>
 
  <named-config name="mySource">
    <property name="driverClass">com.mysql.jdbc.Driver</property>
    <property name="jdbcUrl">jdbc:mysql://localhost:3306/test</property>
    <property name="user">root</property>
    <property name="password"></property>
 
    <property name="initialPoolSize">10</property>
    <property name="maxIdleTime">30</property>
    <property name="maxPoolSize">100</property>
    <property name="minPoolSize">10</property>
  </named-config>
</c3p0-config>

三:配置数据源

package com.jachs.c3p0.config;

import java.beans.PropertyVetoException;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Properties;

import com.mchange.v2.c3p0.ComboPooledDataSource;
import com.mchange.v2.c3p0.cfg.C3P0ConfigUtils;

/***
 * 
 * @author zhanchaohan
 *
 */
public class C3p0Utill {
    
    /***
     * 加载Properties方式初始化数据源
     * @return
     * @throws FileNotFoundException
     * @throws IOException
     * @throws PropertyVetoException 
     * @see C3P0ConfigUtils
     */
    public ComboPooledDataSource initProperties() throws FileNotFoundException, IOException, PropertyVetoException {
        
        Properties properties=C3P0ConfigUtils.findResourceProperties();
        
        
        ComboPooledDataSource cpds=new ComboPooledDataSource();
        
//        cpds.setProperties(properties);//不起作用
        
        cpds.setDriverClass(properties.getProperty("driverClassName"));
        cpds.setJdbcUrl(properties.getProperty("url"));
        cpds.setUser(properties.getProperty("username"));
        cpds.setPassword(properties.getProperty("password"));
        
        cpds.setInitialPoolSize(Integer.parseInt(properties.getProperty("initialPoolSize")));
        cpds.setMaxIdleTime(Integer.parseInt(properties.getProperty("maxIdleTime")));
        cpds.setMaxPoolSize(Integer.parseInt(properties.getProperty("maxPoolSize")));
        cpds.setMinPoolSize(Integer.parseInt(properties.getProperty("minPoolSize")));
        
        return cpds;
    }
    /***
     * 
     * @return
     * @see C3P0ConfigXmlUtils
     */
    public ComboPooledDataSource initXML() {
//        ComboPooledDataSource cpds=new ComboPooledDataSource("mySource");
        ComboPooledDataSource cpds=new ComboPooledDataSource();//不给参数使用默认数据源
        return cpds;
    }
}

四:测试

package com.jachs.c3p0.config;

import java.beans.PropertyVetoException;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;

import org.junit.Before;
import org.junit.Test;

import com.mchange.v2.c3p0.ComboPooledDataSource;

/***
 * 
 * @author zhanchaohan
 *
 */
public class C3P0Test {
    private C3p0Utill c3p0Utill = new C3p0Utill();

    ComboPooledDataSource prCpds;
    ComboPooledDataSource xmlCpds;

    @Before
    public void init() throws FileNotFoundException, IOException, PropertyVetoException {
        prCpds = c3p0Utill.initProperties();
        xmlCpds = c3p0Utill.initXML();
    }

    @Test
    public void tetcPrCpds() throws SQLException {
        Connection connection = prCpds.getConnection();

        ResultSet resultSet = connection.prepareStatement("show tables").executeQuery();

        while (resultSet.next()) {
            System.out.println(resultSet.getString(1));
        }
    }
    @Test
    public void tetcxmlCpds() throws SQLException {
        Connection connection = xmlCpds.getConnection();

        ResultSet resultSet = connection.prepareStatement("show tables").executeQuery();

        while (resultSet.next()) {
            System.out.println(resultSet.getString(1));
        }
    }
}
原文地址:https://www.cnblogs.com/zhanchaohan/p/14694616.html