javaweb mysql 连接池 c3p0 配置_【JavaWeb】c3p0连接池与MySQL
时间: 2023-08-18 12:06:59 浏览: 128
首先,需要在项目中导入c3p0相关的jar包,可以在maven中添加以下依赖:
```xml
<dependency>
<groupId>c3p0</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.1.2</version>
</dependency>
```
然后,在项目中创建一个c3p0配置文件,例如命名为c3p0-config.xml,内容如下:
```xml
<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
<!--初始化连接池时,连接池中连接的个数-->
<initialPoolSize>3</initialPoolSize>
<!--连接池最多保存的连接数-->
<maxPoolSize>10</maxPoolSize>
<!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数-->
<acquireIncrement>3</acquireIncrement>
<!--连接超时时间-->
<checkoutTimeout>60000</checkoutTimeout>
<!--当连接池中连接空闲时间大于idleConnectionTestPeriod所指定的时间时,c3p0则会测试连接池中的连接有效性。-->
<idleConnectionTestPeriod>60</idleConnectionTestPeriod>
<!--如果设为true那么在取得连接的同时将校验连接的有效性。建议使用idleConnectionTestPeriod或automaticTestTable等方法来提升连接测试的可靠性。-->
<testConnectionOnCheckin>false</testConnectionOnCheckin>
<!--如果设为true那么在归还连接的同时将校验连接的有效性。建议使用idleConnectionTestPeriod或automaticTestTable等方法来提升连接测试的可靠性。-->
<testConnectionOnCheckout>false</testConnectionOnCheckout>
<!--自动提交-->
<autoCommitOnClose>true</autoCommitOnClose>
<!--打印连接详细信息-->
<debug>true</debug>
<!--MySQL数据库的驱动程序-->
<driverClass>com.mysql.jdbc.Driver</driverClass>
<!--连接的URL-->
<jdbcUrl>jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false</jdbcUrl>
<!--用户名-->
<user>root</user>
<!--密码-->
<password>123456</password>
<!--定义了一个标准的数据库查询语句,用来测试连接池中连接的可用性,如果执行失败,则抛出SQLException异常,表示该连接已经不可用了。-->
<preferredTestQuery>select 1</preferredTestQuery>
</c3p0-config>
```
其中,需要根据实际情况修改jdbcUrl、user和password等参数。
最后,在Java代码中使用c3p0连接池,示例代码如下:
```java
public class DBUtil {
//定义一个C3P0数据源
private static ComboPooledDataSource ds = new ComboPooledDataSource("mysql");
/**
* 获取连接对象
*/
public static Connection getConnection() throws SQLException {
return ds.getConnection();
}
/**
* 关闭连接对象、Statement对象和ResultSet对象
*/
public static void close(Connection conn, Statement stmt, ResultSet rs) {
try {
if(rs != null) {
rs.close();
}
if(stmt != null) {
stmt.close();
}
if(conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
```
在具体使用时,可以通过DBUtil.getConnection()方法获取连接对象,并通过DBUtil.close()方法关闭连接对象、Statement对象和ResultSet对象。
阅读全文