首页 > 代码库 > DbUtil组件及C3P0数据库连接池组件的使用

DbUtil组件及C3P0数据库连接池组件的使用

<style></style>

DbUtils

Apache 组织提供的一个开源 JDBC工具类库,它是对JDBC的简单封装,学习成本极低,并且使用dbutils能极大简化jdbc编码的工作量,同时也不会影响程序的性能。

使用commons-dbutils 的核心工具类:QueryRunner,该类定义了所有操作数据库的方法

如方法:T query(Connection conn ,String sql, ResultSetHandler<T> rsh, Object... params)

DbUtils提供的封装结果的一些对象:

1) BeanHandler  查询返回单个对象(常用)

2) BeanListHandler  查询返回list集合,集合元素是指定的对象(常用

3)  ArrayHandler  查询返回结果记录的第一行,封装对对象数组, 即返回:Object[]

4)  ArrayListHandler 把查询的每一行都封装为对象数组,再添加到list集合中

5)  ScalarHandler 查询返回结果记录的第一行的第一列  (在聚合函数统计的时候用)

6)  MapHandler  查询返回结果的第一条记录封装为map

使用:

前提:实体类必须符合javabean规范,并且实体类中的字段必须与数据库表的字段相同。引入jar文件 : commons-dbutils-1.6.jar

1、简单创建一个工具类JdbcUtil,方便代码调用

 1 public class JdbcUtil { 2     private static String url = "jdbc:mysql:///test01"; 3     private static String user = "root"; 4     private static String password = "123456"; 5     //获取QueryRunner对象 6     public static QueryRunner getQueryRunner(){ 7         return new QueryRunner(); 8     } 9     //获取连接10     public static Connection getConnection(){11         try {12             Class.forName("com.mysql.jdbc.Driver");13             return DriverManager.getConnection(url, user, password);14         } catch (Exception e) {15             e.printStackTrace();16             throw new RuntimeException(e);17         }18     }19 }

 

 2、调用query方法

 1 @Test 2     public void test1() { 3         List<Student> list = null; 4         try { 5             Connection conn = JdbcUtil.getConnection(); 6             list = JdbcUtil.getQueryRunner().query(conn, "select * from Student" 7                     , new BeanListHandler<Student>(Student.class)); 8         } catch (Exception e) { 9             e.printStackTrace();10             throw new RuntimeException(e);11         }12         if(list !=null){13             for (Student student : list) {14                 System.out.println(student);15             }16         }17     } 

使用C3P0数据库连接池组件优化程序性能

C3P0核心类:ComboPooledDataSource

使用:

前提 引入jar文件 : c3p0-0.9.1.2.jar
方式一:不使用配置文件

1、简单建立一个jdbc工具类,方便方法调用

 1 import java.beans.PropertyVetoException; 2 import java.sql.Connection; 3 import org.apache.commons.dbutils.QueryRunner; 4  5 import com.mchange.v2.c3p0.ComboPooledDataSource; 6  7  8 public class JdbcUtil { 9     private static String url = "jdbc:mysql:///test01";10     private static String user = "root";11     private static String password = "123456";12     private static ComboPooledDataSource dataSource = null;13     private Connection con = null;14     static{15         //初始化操作16         dataSource = new ComboPooledDataSource();// 使用默认的配置17         dataSource.setJdbcUrl(url);//设置连接字符串18         try {19             dataSource.setDriverClass("com.mysql.jdbc.Driver");//获取驱动20         } catch (PropertyVetoException e) {21             e.printStackTrace();22         }23         dataSource.setUser(user);//用户名24         dataSource.setPassword(password);//密码25         dataSource.setInitialPoolSize(3);//初始化时获取三个连接26         dataSource.setMaxPoolSize(6);//连接池中保留的最大连接数27         dataSource.setMaxIdleTime(60); //最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃28     }29     30     //获取QueryRunner对象31     public static QueryRunner getQueryRunner(){32         return new QueryRunner(dataSource);33     }34     //获取连接纯 通过c3p0核心类对象获取(此例子没用到该方法)35     public static Connection getConnection(){36         try {37             return dataSource.getConnection();38         } catch (Exception e) {39             e.printStackTrace();40             throw new RuntimeException(e);41         }42     }43 }

 

2、执行测试

 1 @Test 2     public void test1() { 3         List<Student> list = null; 4         try { 5             Connection conn = JdbcUtil.getConnection(); 6             list = JdbcUtil.getQueryRunner().query("select * from Student" 7                     , new BeanListHandler<Student>(Student.class)); 8         } catch (Exception e) { 9             e.printStackTrace();10             throw new RuntimeException(e);11         }12         if(list !=null){13             for (Student student : list) {14                 System.out.println(student);15             }16         }17     }

 

方式二:使用配置文件来初始化

1、将C3P0配置文件c3p0-config.xml放置在工程src目录下

c3p0-config.xml

 1 <c3p0-config> 2   <!-- 默认加载配置 --> 3   <default-config> 4      <property name="driverClass">com.mysql.jdbc.Driver</property>  5      <property name="jdbcUrl">jdbc:mysql://localhost:3306/test01</property>  6      <property name="user">root</property>  7      <property name="password">123456</property>  8      <property name="initialPoolSize">5</property>  9      <property name="maxPoolSize">10</property> 10   </default-config>11   <!-- 指定名称加载配置 -->12   <named-config name="C3P0TestName">13     <property name="driverClass">com.mysql.jdbc.Driver</property> 14      <property name="jdbcUrl">jdbc:mysql://localhost:3306/test01</property> 15      <property name="user">root</property> 16      <property name="password">123456</property> 17      <property name="initialPoolSize">5</property> 18      <property name="maxPoolSize">10</property> 19   </named-config>20   21 </c3p0-config>

 

2、简单编写一个工具类,方便代码调用

 1 import java.sql.Connection; 2 import org.apache.commons.dbutils.QueryRunner; 3  4 import com.mchange.v2.c3p0.ComboPooledDataSource; 5  6  7 public class JdbcUtil { 8     private static ComboPooledDataSource dataSource = null; 9     static{10         //初始化操作11         // 自动加载src目录下c3p0的配置文件【c3p0-config.xml】12         dataSource = new ComboPooledDataSource();// 使用默认的配置13         //使用c3p0-config.xml配置文件中named-config的name属性为C3P0TestName的配置14         //dataSource = new ComboPooledDataSource("C3P0TestName");15     }16     17     //获取QueryRunner对象18     public static QueryRunner getQueryRunner(){19         return new QueryRunner(dataSource);20     }21     //获取连接纯 通过c3p0核心类对象获取(此例子没用到该方法)22     public static Connection getConnection(){23         try {24             return dataSource.getConnection();25         } catch (Exception e) {26             e.printStackTrace();27             throw new RuntimeException(e);28         }29     }30 }

 

3、执行测试

 1 @Test 2     public void test1() { 3         List<Student> list = null; 4         try { 5             Connection conn = JdbcUtil.getConnection(); 6             list = JdbcUtil.getQueryRunner().query("select * from Student" 7                     , new BeanListHandler<Student>(Student.class)); 8         } catch (Exception e) { 9             e.printStackTrace();10             throw new RuntimeException(e);11         }12         if(list !=null){13             for (Student student : list) {14                 System.out.println(student);15             }16         }17     }

 

完毕.

 

DbUtil组件及C3P0数据库连接池组件的使用