一,准备工作
1)导入相应的驱动及jar包,如下图:
前面几篇博客都有对JDBC连接数据 DbUtils简化数据库操作 C3P0实现连接池进行了介绍.
二,代码环节
1)工具类JdbcUtils.java代码如下:
package com.bighuan.utils;
import javax.sql.DataSource;
import org.apache.commons.dbutils.QueryRunner;
import com.mchange.v2.c3p0.ComboPooledDataSource;
/**
* 工具类 1,初始化c3p0连接池 2,创建DbUtils核心工具类对象
*
* @author bighuan
*
*/
public class JdbcUtils {
/**
* 1,初始化c3p0连接池
*/
private static DataSource dataSource;
static {
dataSource = new ComboPooledDataSource();
}
/**
* 创建DbUtils核心工具类对象
*
* @return
*/
public static QueryRunner getQueryRunner() {
/**
* 创建QueryRunner对象,传入连接池对象(数据源)
* 注意:在创建QueryRunner对象时,如果传入了数据源对象,那么在使用QueryRunner对象
* 方法的时候,就不需要传入连接连接对象,会自动从数据源中获取连接(不需要关闭,会自动关闭)
*/
return new QueryRunner(dataSource);
}
}
2)c3p0连接池对应的配置文件c3p0-config.xml放在在src目录下:
<c3p0-config>
<default-config>
<property name="jdbcUrl">jdbc:mysql://localhost:3306/day15</property>
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="user">root</property>
<property name="password">abc</property>
<property name="initialPoolSize">3</property>
<property name="maxPoolSize">6</property>
<property name="maxIdleTime">2000</property>
<!--
<user-overrides user="swaldman">
<property name="debugUnreturnedConnectionStackTraces">true</property>
</user-overrides>
-->
</default-config>
<!--
<named-config name="oracle_config">
<property name="maxStatements">200</property>
<property name="jdbcUrl">jdbc:test</property>
<user-overrides user="poop">
<property name="maxStatements">300</property>
</user-overrides>
</named-config>
-->
</c3p0-config>
到此工具类就准备好了.
三,使用工具类
这个工具类比自己最初的那个JdbcUtils.java工具类方便的多了.当然了,也是使用了一些厉害的组件.使用示例如下:
// 得到DbUtils核心工具类
QueryRunner qr = JdbcUtils.getQueryRunner();
String sql = "select * from dept limit ?,?";
try {
List<Dept> pageData = qr.query(sql, new BeanListHandler<Dept>(
Dept.class), index, pageCount);
pb.setPageData(pageData);
} catch (Exception e) {
throw new RuntimeException(e);
}