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

DbUtils

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

使用commons-dbutils 的核心工具类:QueryRunner,该类定义了全部操做数据库的方法mysql

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

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

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

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

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

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

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

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

使用:

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

一、简单建立一个工具类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 }

 

 二、调用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
方式一:不使用配置文件

一、简单创建一个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 }

 

二、执行测试

 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     }

 

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

一、将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>

 

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

 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 }

 

三、执行测试

 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     }

 

完毕.

相关文章
相关标签/搜索