dbutils原理及結果集處理器的介紹--------------------------------
1 DBUtils簡介
DBUtils是Apache Commons元件中的一員,開源免費!
DBUtils是對JDBC的簡單封裝,但是它還是被很多公司使用!
DBUtils的Jar包:dbutils.jar
2 DBUtils主要類
- DbUtils:都是靜態方法,一系列的close()方法;
- QueryRunner:
- update():執行insert、update、delete;
- query():執行select語句;
- batch():執行批處理。
3 QueryRunner之更新
QueryRunner的update()方法可以用來執行insert、update、delete語句。
- 建立QueryRunner
構造器:QueryRunner();
- 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 } |
還有另一種方式來使用QueryRunner
- 建立QueryRunner
構造器:QueryRunner(DataSource)
- 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介面了。
- MapHandler:單行處理器!把結果集轉換成Map<String,Object>,其中列名為鍵!
- MapListHandler:多行處理器!把結果集轉換成List<Map<String,Object>>;
- BeanHandler:單行處理器!把結果集轉換成Bean,該處理器需要Class引數,即Bean的型別;
- BeanListHandler:多行處理器!把結果集轉換成List<Bean>;
- ColumnListHandler:多行單列處理器!把結果集轉換成List<Object>,使用ColumnListHandler時需要指定某一列的名稱或編號,例如:new ColumListHandler(“name”)表示把name列的資料放到List中。
- ScalarHandler:單行單列處理器!把結果集轉換成Object。一般用於聚集查詢,例如select count(*) from tab_student。