1、配置方式
c3p0的配置方式分为三种,分别是
1.类路径下提供一个c3p0-config.xml文件
2.类路径下提供一个c3p0.properties文件
3.setters一个个地设置各个配置项
datasource = new ComboPooledDataSource();
//连接配置
datasource.setJdbcUrl("jdbc:mysql://localhost:3306/test?serverTimezone=UTC");
datasource.setDriverClass("com.mysql.cj.jdbc.Driver");
datasource.setPassword("123");
datasource.setUser("root");
//连接池配置
datasource.setAcquireIncrement(5);//每创建的数量间隔
datasource.setInitialPoolSize(5);//初始化池的大小
datasource.setMaxPoolSize(20);//最大大小
datasource.setMinPoolSize(5);//最小大小
2、配置文件的位置
我们主要是要注意配置文件的位置
2.1、Maven项目的c3p0配置
1、先导入c3p0的依赖
在pom.xml文件里面添加
<dependency>
<groupId>com.mchange</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.5.2</version>
</dependency>
2、在resources文件夹添加配置文件信息
不要添加到src文件下面,而是resources文件夹下面!!!
<?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/test?serverTimezone=UTC</property>
<property name="user">root</property>
<property name="password">123456</property>
<property name="initialPoolSize">5</property>
<property name="maxPoolSize">20</property>
<property name="minPoolSize">5</property>
<property name="checkoutTimeout">3000</property>
</default-config>
<!--为oracle提供的配置 创建连接池对象时,可以指定命名加载配置信息-->
<named-config name="oracle-config">
<property name="jdbcUrl">jdbc:oracle:thin:@地址:端口:ORCL</property>
<property name="driverClass">oracle.jdbc.driver.OracleDriver</property>
<property name="user">root</property>
<property name="password">12345</property>
<!-- 池参数 -->
<property name="acquireIncrement">3</property>
<property name="initialPoolSize">30</property>
<property name="minPoolSize">2</property>
<property name="maxPoolSize">50</property>
</named-config>
<named-config name="otherc3p0">
</named-config>
</c3p0-config>
3、测试:
datasource = new ComboPooledDataSource();//文件位置对的话,自动加载
public static void main(String[]args) {
Connection connection= null;
Statement statement = null;
ResultSet res = null;
try{
System.out.println("connect to database....");
connection = JDBCUtils_C3P0.getConnect();
System.out.println("create statement...");
statement = connection.createStatement();
//3、选择sql命令操作数据库中的数据
String sql;
sql="select * from bank";
//4、执行sql语句,获取结果集
res = statement.executeQuery(sql);//获取结果集
//5、从结果集里面获取数据
while(res.next()){
int id = res.getInt("id");
String name = res.getString("name");
System.out.println(id+":"+name);
}
} catch (SQLException e) {
e.printStackTrace();
}finally {
JDBCUtils_C3P0.free(connection,statement,res);
}
}
2.2、普通java项目的配置
导入依赖包,src文件夹下添加配置文件。(未尝试)
包下载:
链接:https://pan.baidu.com/s/1rAEXqMYvLv7bU4B-oE7o5w
提取码:udyg
复制这段内容后打开百度网盘手机App,操作更方便哦
3、c3p0与DBCP的区别
- dbcp没有自动回收空闲连接的功能,c3p0有。
- Hibernate等框架默认推荐使用c3p0作为连接池,后续不支持DBCP