Common Dbutils 詳解

jopen 11年前發布 | 14K 次閱讀 持久層框架 DbUtils

Common Dbutils是操作數據庫的組件,對傳統操作數據庫的類進行二次封裝,可以把結果集轉化成List。
DBUtils包括3個包:
org.apache.commons.dbutils 
org.apache.commons.dbutils.handlers 
org.apache.commons.dbutils.wrappers
DBUtils封裝了對JDBC的操作,簡化了JDBC操作,可以少寫代碼。
 
org.apache.commons.dbutils
DbUtils 關閉鏈接等操作
QueryRunner 進行查詢的操作
 
org.apache.commons.dbutils.handlers
ArrayHandler :將ResultSet中第一行的數據轉化成對象數組
ArrayListHandler將ResultSet中所有的數據轉化成List,List中存放的是 Object[]
BeanHandler :將ResultSet中第一行的數據轉化成類對象
BeanListHandler :將ResultSet中所有的數據轉化成List,List中存放的是類對象
ColumnListHandler :將ResultSet中某一列的數據存成List,List中存放的是 Object對象
KeyedHandler :將ResultSet中存成映射,key為某一列對應為Map。Map中存放的是數據
MapHandler :將ResultSet中第一行的數據存成Map映射
MapListHandler :將ResultSet中所有的數據存成List。List中存放的是Map
ScalarHandler :將ResultSet中一條記錄的其中某一列的數據存成Object
 
org.apache.commons.dbutils.wrappers
SqlNullCheckedResultSet :對ResultSet進行操作,改版里面的值
StringTrimmedResultSet :去除ResultSet中中字段的左右空格。Trim()
 

主要方法:
DbUtils類:啟動類

ResultSetHandler接口:轉換類型接口

MapListHandler類:實現類,把記錄轉化成List

BeanListHandler類:實現類,把記錄轉化成List,使記錄為JavaBean類型的對象

Qrery Runner類:執行SQL語句的類

 

建立三個Java文件

命名為BeanListExample.java

Guestbook.java

MapListExample.java
 

源碼:
BeanListExample.java

package  com.sy;

import  org.apache.commons.dbutils.DbUtils;
import  org.apache.commons.dbutils.QueryRunner;
import  org.apache.commons.dbutils.handlers.BeanListHandler;
import  java.sql.Connection;
import  java.sql.DriverManager;
import  java.sql.SQLException;
import  java.util.List;

public   class  BeanListExample {
    public   static   void  main(String[] args) {
        Connection conn =   null ;
        String url =   " jdbc:mysql://localhost:3306/people" ;
        String jdbcDriver =   " com.mysql.jdbc.Driver" ;
        String user =   " root " ;
        String password =   " hicc " ;

        DbUtils.loadDriver(jdbcDriver);
        try   {
            conn =  DriverManager.getConnection(url, user, password);
            QueryRunner qr =   new  QueryRunner();
            List results =  (List) qr.query(conn, " select id,name from guestbook" , new  BeanListHandler(Guestbook.class ));
            for  ( int  i  =   0 ; i  <  results.size(); i++ )  {
                Guestbook gb =  (Guestbook) results.get(i);
                System.out.println(" id: "   +  gb.getId() +   " ,name: "   +  gb.getName());
            }
        }  catch  (SQLException e)  {
            e.printStackTrace();
        }  finally  {
            DbUtils.closeQuietly(conn);
        }
    }
} 


 

Guestbook.java
package  com.sy;

public   class  Guestbook {
     private  Integer id;
     private  String name;

    public  Integer getId() {
        return  id;
    }

    public   void  setId(Integer id) {
        this .id =  id;
    }

    public  String getName() {
        return  name;
    }

    public   void  setName(String name) {
        this .name =  name;
    }
}
 


MapListExample.java
 
package  com.sy;

import  org.apache.commons.dbutils.DbUtils;
import  org.apache.commons.dbutils.QueryRunner;
import  org.apache.commons.dbutils.handlers.MapListHandler;

import  java.sql.Connection;
import  java.sql.DriverManager;
import  java.sql.SQLException;

import  java.util.List;
import  java.util.Map;

public   class  MapListExample {
    public   static   void  main(String[] args) {
        Connection conn =   null ;
        String url =   " jdbc:mysql://localhost:3306/people" ;
        String jdbcDriver =   " com.mysql.jdbc.Driver" ;
        String user =   " root " ;
        String password =   " hicc " ;

        DbUtils.loadDriver(jdbcDriver);
        try   {
            conn =  DriverManager.getConnection(url, user, password);
            QueryRunner qr =   new  QueryRunner();
            List results =  (List) qr.query(conn, " select id,name from guestmessage" , new  MapListHandler());
            for  ( int  i  =   0 ; i  <  results.size(); i++ )  {
                Map map =  (Map) results.get(i);
                System.out.println(" id: "   +  map.get( " id " )  +   " ,name: "   +  map.get( " name " ));
            }
        }  catch  (SQLException e)  {
            e.printStackTrace();
        }  finally  {
            DbUtils.closeQuietly(conn);
        }
    }
}
 



使用組建好需要添加commons - dbutils - 1.1 .jar和mysql - connector - java - 5.1 . 6 - bin.jar 兩個jar包。

 

配置完畢!!!

  // 另一種方法
// 使用dbutils1.0版本

import  java.util. * ;
import  java.util.logging.* ;
import  java.sql.* ;
import  org.apache.commons.dbutils.* ;
import  org.apache.commons.dbutils.handlers.* ;

public   class  TestDBUnits {

 public   static   void  main(String[]args) throws  Exception {
  TestDBUnits test =   new  TestDBUnits();

  for ( int  i  =   0  ; i <   1  ; i ++ )  {   
   test.testQuery1();
   test.testQuery2();
   test.testUpdate();
  }
 }

 public   void  testQuery1(){
  try   {
   QueryRunner qr =   new  QueryRunner() ;
   ResultSetHandler rsh =   new  ArrayListHandler();   
   String strsql =   " select * from test1" ;   
   ArrayList result =  (ArrayList)qr.query(getConnection() ,strsql ,rsh);
    // System.out.print("");
  }  catch (Exception ex) {
   ex.printStackTrace(System.out);
  }
 }

 public   void  testQuery2(){
  try   {
   QueryRunner qr =   new  QueryRunner() ;
   ResultSetHandler rsh =   new  MapListHandler();   
   String strsql =   " select * from test1" ;   
   ArrayList result =  (ArrayList)qr.query(getConnection() ,strsql ,rsh);
   for ( int  i  =   0  ; i <  result.size() ; i++ )  {
    Map map =  (Map)result.get(i);
     // System.out.println(map);    
   }
    // System.out.print("");
  }  catch (Exception ex) {
   ex.printStackTrace(System.out);
  }
 }

 public   void  testUpdate(){
  try   {
   QueryRunner qr =   new  QueryRunner() ;
   ResultSetHandler rsh =   new  ArrayListHandler();
   String strsql =   " insert test1(page ,writable ,content)values('ttt','ttt','faskldfjklasdjklfjasdklj')" ;
   qr.update(getConnection() ,strsql);
    // System.out.print("");
  }  catch (Exception ex) {
   ex.printStackTrace(System.out);
  }
 }

  private  Connection getConnection() throws  InstantiationException,
   IllegalAccessException, ClassNotFoundException, SQLException {

  String strDriver =   " org.gjt.mm.mysql.Driver" ;
  String strUrl =   " jdbc:mysql://localhost:3306/test" ;
  String strUser =   " root " ;
  String strPass =   "" ;

  Class.forName(strDriver).newInstance();  
   return  DriverManager.getConnection(strUrl, strUser, strPass);
 }
} 
 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!