1.1 配置c3p0.properties属性文件
c3p0.driverClass=com.mysql.jdbc.Driver
c3p0.jdbcUrl=jdbc:mysql://localhost:3306/数据库名?useUnicode=true&characterEncoding=UTF-8&useSSL=false
c3p0.user=root
c3p0.password=root
c3p0.initialPoolSize=10
c3p0.maxPoolSize=50
c3p0.minPoolSize=5
c3p0.acquireIncrement=5
c3p0.maxIdleTime=600
c3p0.acquireRetryAttempts=30
c3p0.acquireRetryDelay=1000
c3p0.autoCommitOnClose = false
c3p0.checkoutTimeout = 0
c3p0.idleConnectionTestPeriod=60
c3p0.maxStatements=1000
2. c3p0-config.xml
<c3p0-config>
<!-- c3p0连接池配置 -->
<default-config>
<!--默认是mysql数据库-->
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://localhost:3306/ssm?useUnicode=true&characterEncoding=UTF-8&useSSL=false</property>
<!-- 数据库的用户名 默认值:null -->
<property name="user">root</property>
<!-- 数据库的密码 默认值:null -->
<property name="password">861221293</property>
<!--初始化连接数 取值要在minPoolSize和maxPoolSize之间(可包含,闭区间) 默认值:3 -->
<property name="initialPoolSize">5</property>
<!-- 最大连接数 (连接池中的连接数不能超过maxPoolSize最大连接数) 默认值:15-->
<property name="maxPoolSize">50</property>
<!--最小连接数 默认值:3 -->
<property name="minPoolSize">10</property>
<!-- c3p0连接池中数据连接不够时(无空闲连接可用),一次增长的个数(增长不能超过maxPoolSize最大连接个数) 默认值:3 -->
<property name="acquireIncrement">5</property>
<!-- 连接的最大空闲时间,如果超过这个时间还没有被使用,就断开这个连接(设置为0或负数,就永远都不会被断开) 单位:秒 默认值 :0 -->
<property name="maxIdleTime">600</property>
<!-- 从数据库获取新连接失败后重复尝试的次数。小于等于0表示无限次 默认值: 30-->
<property name="acquireRetryAttempts" value="30"/>
<!-- 两次连接的中间间隔时间(重新尝试的时间间隔) 单位:毫秒 默认值:1000 -->
<property name="acquireRetryDelay">1000</property>
<!-- 连接关闭时,是否将所有未提交的操作进行事务回滚 默认值:false -->
<property name="autoCommitOnClose">false</property>
<!-- 当连接池用完时,客户端调用getConnection()后等待获取新连接的时间 单位:毫秒 默认值:0
如果值设为 0,将无限期等待,直到有空闲连接。 否则按照设置的值,超时将抛出SQLException异常
时间设置过小时会出现连接超时,这样会抛出SQLException异常,设置时间时需要小心,按照实际情况设置适当的值-->
<property name="checkoutTimeout">0</property>
<!-- 每隔多少秒检查所有连接池中的空闲连接 单位:秒 默认值:0 -->
<property name="idleConnectionTestPeriod">60</property>
<!-- 配置PreparedStatement缓存,设置连接池为数据源缓存的PreparedStatement的总数
为0的时候不缓存,同时maxStatementsPerConnection的配置无效。
由于PreparedStatement属于单个Connection,所以这个数量应该根据应用中平均连接数乘以每个连接的平均PreparedStatement来计算-->
<property name="maxStatements">1000</property>
</default-config>
</c3p0-config>
1.2 Spring核心配置文件中配置applicationContext.xml
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<!-- 连接池4大组件 -->
<property name="driverClass" value="${c3p0.driverClass}"/>
<property name="jdbcUrl" value="${c3p0.jdbcUrl}"/>
<property name="user" value="${c3p0.user}"/>
<property name="password" value="${c3p0.password}"/>
<!--初始化连接数 取值要在minPoolSize和maxPoolSize之间(可包含,闭区间) 默认值:3 -->
<property name="initialPoolSize" value="${c3p0.initialPoolSize}"/>
<!-- 最大连接数 (连接池中的连接数不能超过maxPoolSize最大连接数) 默认值:15-->
<property name="maxPoolSize" value="${c3p0.maxPoolSize}"/>
<!--最小连接数 默认值:3 -->
<property name="minPoolSize" value="${c3p0.minPoolSize}"/>
<!-- c3p0连接池中数据连接不够时(无空闲连接可用),一次增长的个数(增长不能超过maxPoolSize最大连接个数) 默认值:3 -->
<property name="acquireIncrement" value="${c3p0.acquireIncrement}"/>
<!-- 连接的最大空闲时间,如果超过这个时间还没有被使用,就断开这个连接(设置为0或负数,就永远都不会被断开) 单位:秒 默认值 :0 -->
<property name="maxIdleTime" value="${c3p0.maxIdleTime}"/>
<!-- 从数据库获取新连接失败后重复尝试的次数。小于等于0表示无限次 默认值: 30-->
<property name="acquireRetryAttempts" value="${c3p0.acquireRetryAttempts}"/>
<!-- 两次连接的中间间隔时间(重新尝试的时间间隔) 单位:毫秒 默认值:1000 -->
<property name="acquireRetryDelay" value="${c3p0.acquireRetryDelay}"/>
<!-- 连接关闭时,是否将所有未提交的操作进行事务回滚 默认值:false -->
<property name="autoCommitOnClose" value="${c3p0.autoCommitOnClose}"/>
<!-- 当连接池用完时,客户端调用getConnection()后等待获取新连接的时间 单位:毫秒 默认值:0
如果值设为 0,将无限期等待,直到有空闲连接。 否则按照设置的值,超时将抛出SQLException异常
时间设置过小时会出现连接超时,这样会抛出SQLException异常,设置时间时需要小心,按照实际情况设置适当的值-->
<property name="checkoutTimeout" value="${c3p0.checkoutTimeout}"/>
<!-- 每隔多少秒检查所有连接池中的空闲连接 单位:秒 默认值:0 -->
<property name="idleConnectionTestPeriod" value="${c3p0.idleConnectionTestPeriod}"/>
<!-- 配置PreparedStatement缓存,设置连接池为数据源缓存的PreparedStatement的总数
为0的时候不缓存,同时maxStatementsPerConnection的配置无效。
由于PreparedStatement属于单个Connection,所以这个数量应该根据应用中平均连接数乘以每个连接的平均PreparedStatement来计算-->
<property name="maxStatements" value="${c3p0.maxStatements}"/>
</bean>