首先要导入C3p0jar包
配置文件
<c3p0-config>
<!--连接池名字-->
<named-config name="mysql">
<!--数据路连接用户名-->
<property name="user">root</property>
<!--数据库密码-->
<property name="password">999</property>
<!--数据库驱动-->
<property name="driverClass">com.mysql.jdbc.Driver</property>
<!--数据库URL-->
<property name="jdbcUrl">jdbc:mysql://localhost:3306/orders</property>
<!--上面的是最基本的-->
<!-- 初始化连接池中的连接数取值应在最小连接数与最大连接数之间默认为3-->
<property name="initialPoolSize">10</property>
<!--最大空闲时间60秒内未使用则连接被丢弃若为0则永不丢弃默认值0-->
<property name="maxIdleTime">30</property>
<!--连接池中的最大连接数默认15-->
<property name="maxPoolSize">100</property>
<!--连接池中保留的最小连接数默认为3-->
<property name="minPoolSize">10</property>
<!--当连接池连接耗尽时客户端调用getConnection()后等待获取新连接的时间超时后将抛出SQLException如设为0则无限期等待单位毫秒默认0-->
<property name="checkoutTimeout" value="3000"/>
<!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数默认值3-->
<property name="acquireIncrement" value="2"/>
<!--定义在从数据库获取新连接失败后重复尝试的次数默认值30小于等于0表示无限次-->
<property name="acquireRetryAttempts" value="0"/>
<!--重新尝试的时间间隔默认为1000毫秒-->
<property name="acquireRetryDelay" value="1000" />
<!--关闭连接时是否提交未提交的事务默认为false即关闭连接回滚未提交的事务 -->
<property name="autoCommitOnClose">false</property>
<!--c3p0将建一张名为Test的空表并使用其自带的查询语句进行测试如果定义了这个参数那么属性preferredTestQuery将被忽略你不能在这张Test表上进行任何操作它将只供c3p0测试使用默认值null-->
<property name="automaticTestTable">Test</property>
<!--如果为false则获取连接失败将会引起所有等待连接池来获取连接的线程抛出异常但是数据源仍有效保留并在下次调用getConnection()的时候继续尝试获取连接如果设为true那么在尝试获取连接失败后该数据源将申明已断开并永久关闭默认false-->
<property name="breakAfterAcquireFailure">false</property>
<!--每60秒检查所有连接池中的空闲连接默认值:0不检查-->
<property name="idleConnectionTestPeriod">60</property>
</named-config>
</c3p0-config>
工具类
public class C3p0Util {
//这个类是自己写的工具类在这里创建了一个连接池对象所有的连接都存在对象里这个对象就是连接池
//定义一个连接池属性赋值为mull
private static ComboPooledDataSource dataSource = null;
static {
//创建一个连接池这里的创建的时候在构造函数里传入一个连接池名字它会自动的根据名字去找配置文件
//在这里也可以不要这个配置文件可以创建对象以后对象会有一些方法同样可以设置配置文件里的东西
//这里我就具体不说怎么设置了因为不建议不用配置文件在公司项目开发中自己肯定用自己的数据库测试为了方便修改所以使用配置文件
dataSource = new ComboPooledDataSource("mysql");
}
/**
* 这个函数可以配合dbutils的构造函数使用
* 因为dbuntils的构造函数参数是一个连接池
*而这个函数正好返回一个连接池
* dbutils怎么用详见我的上一条博客
* @return 返回一个连接池就是上面创建的连接池
*/
public static ComboPooledDataSource getDataSource(){
//返回这个连接池
return dataSource;
}
/**
*
* @return 返回一个从数据库里拿出来的连接
* @throws SQLException
*/
public static Connection getConnection() throws SQLException {
//返回一条连接
return dataSource.getConnection();
}
}