一、导入jar包
下载链接
二、配置文件
配置文件名称:c3p0-config.xml (固定)
配置文件路径:src (类路径)
配置文件内容:命名配置
<c3p0-config><!-- 命名的配置 --><named-config name="test"><!-- 连接数据库的4项基本参数 --><property name="driverClass">com.mysql.jdbc.Driver</property><property name="jdbcUrl">jdbc:mysql://localhost:3306/mytest01</property><property name="user">root</property><property name="password">123</property><!-- 如果池中数据连接不够时一次增长多少个 --><property name="acquireIncrement">5</property><!-- 初始化连接数 --><property name="initialPoolSize">5</property><!-- 最小连接数 --><property name="minPoolSize">10</property><!-- 最大连接数 --><property name="maxPoolSize">40</property><!-- JDBC的标准参数,用以控制数据源内加载的PrepareStatements数量 --><property name="maxStatements">200</property><!-- 连接池内单个连接所拥有的最大缓存statements数 --><property name="maxStatementsPerConnection">5</property></named-config>
</c3p0-config>
配置文件内容:默认配置
<c3p0-config><!-- 默认配置,如果没有指定使用则使用这个配置 --><default-config><property name="driverClass">com.mysql.jdbc.Driver</property><property name="jdbcUrl">jdbc:mysql://localhost:3306/mytest01</property><property name="user">root</property><property name="password">123</property><property name="acquireIncrement">50</property><property name="initialPoolSize">100</property><property name="minPoolSize">50</property><property name="maxPoolSize">1000</property><!-- intergalactoApp adopts a different approach to configuring statement caching --><property name="maxStatements">0</property><property name="maxStatementsPerConnection">5</property><!-- he's important, but there's only one of him --><user-overrides user="master-of-the-universe"><property name="acquireIncrement">1</property><property name="initialPoolSize">1</property><property name="minPoolSize">1</property><property name="maxPoolSize">5</property><property name="maxStatementsPerConnection">50</property></user-overrides></default-config>
</c3p0-config>
常见配置项:
| 分类 | 属性 | 描述 |
| 必须项 | user | 用户名 |
| password | 密码 | |
| driverClass | 驱动 mysql驱动,com.mysql.jdbc.Driver | |
| jdbcUrl | 路径 mysql路径,jdbc:mysql://localhost:3306/数据库 | |
| 基本配置 | acquireIncrement | 连接池无空闲连接可用时,一次性创建的新连接数 默认值:3 |
| initialPoolSize | 连接池初始化时创建的连接数 默认值:3 | |
| maxPoolSize | 连接池中拥有的最大连接数 默认值:15 | |
| minPoolSize | 连接池保持的最小连接数 | |
| maxidleTime | 连接的最大空闲时间。如果超过这个时间,某个数据库连接还没有被使用,则会断开掉这个连接,如果为0,则永远不会断开连接。 默认值:0 | |
| 管理连接池的大小和连接的生存时间(扩展) | maxConnectionAge | 配置连接的生存时间,超过这个时间的连接将由连接池自动断开丢弃掉。当然正在使用的连接不会马上断开,而是等待它 close 再断开。配置为 0 的时候则不会对连接的生存时间进行限制。 默认值:0 |
| maxIdleTimeExcessConnections | 这个配置主要时为了减轻连接池的负载,配置不为 0 ,则会将连接池中的连接数量保持到minPoolSize,为 0 则不处理。 | |
| 配置PreparedStatement缓存(扩展) | maxStatements | 连接池为数据源缓存的PreparedStatement的总数。由于PreparedStatement属于单个Connection,所有这个数量应该根据应用中平均连接数乘以每个连接的平均PreparedStatement来计算。为 0 的时候不缓存,同时maxStatementsPerConnection的配置无效。 |
| maxStatementsPerConnection | 连接池为数据源单个Connection缓存的PreparedStatement数,这个配置比maxStatements更有意义,因为它缓存的服务对象是单个数据连接,如果配置的好,肯定是可以提高性能的。为 0 的时候不缓存。 |
三、在类中调用
C3P0提供核心工具类:ComboPooledDataSource,如果要使用连接池,必须创建该类的实例对象。
1、new ComboPooledDataSource("名称"); //使用配置文件“命名配置”
<!-- 命名的配置 -->
<named-config name="test">
2、new ComboPooledDataSource(); //使用配置文件“默认配置”
<!-- 默认配置,如果没有指定使用则使用这个配置 -->
<default-config>
3、编写工具类
import com.mchange.v2.c3p0.ComboPooledDataSource;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;public class C3P0Utils {//默认配置private static DataSource dataSource = new ComboPooledDataSource();//命名配置//private static DataSource dataSource = new ComboPooledDataSource("test");public static DataSource getDataSource() {return dataSource;}public static Connection getConnection() {try {return dataSource.getConnection();} catch (SQLException e) {throw new RuntimeException(e);}}
}

















