Dbutils 详解

来源:互联网 发布:thread0806.php fid 7 编辑:程序博客网 时间:2024/05/17 06:31


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
Code
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
Code
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
Code
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);
 }
}