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     }

 

完畢.

相關文章
相關標籤/搜索