1. 程式人生 > >dbutils原理及結果集處理器的介紹--------------------------------

dbutils原理及結果集處理器的介紹--------------------------------

1 DBUtils簡介

DBUtils是Apache Commons元件中的一員,開源免費!

DBUtils是對JDBC的簡單封裝,但是它還是被很多公司使用!

DBUtils的Jar包:dbutils.jar

2 DBUtils主要類

  1. DbUtils:都是靜態方法,一系列的close()方法;
  2. QueryRunner:
  • update():執行insert、update、delete;
  • query():執行select語句;
  • batch():執行批處理。

3 QueryRunner之更新

QueryRunner的update()方法可以用來執行insert、update、delete語句。

  1. 建立QueryRunner

構造器:QueryRunner();

  1. update()方法

int update(Connection con, String sql, Object… params)

    @Test

    public void fun1() throws SQLException {

       QueryRunner qr = new QueryRunner();

       String sql = "insert into user values(?,?,?)";

       qr.update(JdbcUtils.getConnection

(), sql, "u1", "zhangSan", "123");

    }

  還有另一種方式來使用QueryRunner

  1. 建立QueryRunner

構造器:QueryRunner(DataSource)

  1. update()方法

int update(String sql, Object… params)

這種方式在建立QueryRunner時傳遞了連線池物件,那麼在呼叫update()方法時就不用再傳遞Connection了。

    @Test

    public void fun2() throws SQLException {

       QueryRunner qr = new QueryRunner(JdbcUtils.getDataSource());

       String sql = "insert into user values(?,?,?)";

       qr.update(sql, "u1", "zhangSan", "123");

    }

4 ResultSetHandler

我們知道在執行select語句之後得到的是ResultSet,然後我們還需要對ResultSet進行轉換,得到最終我們想要的資料。你可以希望把ResultSet的資料放到一個List中,也可能想把資料放到一個Map中,或是一個Bean中。

DBUtils提供了一個介面ResultSetHandler,它就是用來ResultSet轉換成目標型別的工具。你可以自己去實現這個介面,把ResultSet轉換成你想要的型別。

DBUtils提供了很多個ResultSetHandler介面的實現,這些實現已經基本夠用了,我們通常不用自己去實現ResultSet介面了。

  1. MapHandler:單行處理器!把結果集轉換成Map<String,Object>,其中列名為鍵!
  2. MapListHandler:多行處理器!把結果集轉換成List<Map<String,Object>>;
  3. BeanHandler:單行處理器!把結果集轉換成Bean,該處理器需要Class引數,即Bean的型別;
  4. BeanListHandler:多行處理器!把結果集轉換成List<Bean>;
  5. ColumnListHandler:多行單列處理器!把結果集轉換成List<Object>,使用ColumnListHandler時需要指定某一列的名稱或編號,例如:new ColumListHandler(“name”)表示把name列的資料放到List中。
  6. ScalarHandler:單行單列處理器!把結果集轉換成Object。一般用於聚集查詢,例如select count(*) from tab_student。