Dbutil框架和它的簡(jiǎn)單介紹
l commons-dbutils 是 Apache 組織提供的一個(gè)開源 JDBC工具類庫(kù),它是對(duì)JDBC的簡(jiǎn)單封裝,學(xué)習(xí)成本極低,并且使用dbutils能極大簡(jiǎn)化jdbc編碼的工作量,同時(shí)也不會(huì)影響程序的性能。因此dbutils成為很多不喜歡hibernate的公司的。l API介紹:
? org.apache.commons.dbutils.QueryRunner --- 核心
? org.apache.commons.dbutils.ResultSetHandler
? 工具類
? org.apache.commons.dbutils.DbUtils、。
DBUtils學(xué)習(xí)
1、QueryRunner 框架核心類 ,所有數(shù)據(jù)庫(kù)操作都是必須通過 QueryRunner 進(jìn)行的
2、ResultSetHandler 結(jié)果集封裝接口,完成將ResultSet 結(jié)果集 封裝為一個(gè)Java對(duì)象
3、DbUtils 工具類 提供驅(qū)動(dòng)管理、事務(wù)管理、釋放資源等一系列公共方法
DbUtils
l DbUtils :提供如關(guān)閉連接、裝載JDBC驅(qū)動(dòng)程序等常規(guī)工作的工具類,里面的所有方法都是靜態(tài)的。主要方法如下:
? public static void close(…) throws java.sql.SQLException: DbUtils類提供了三個(gè)重載的關(guān)閉方法。這些方法檢查所提供的參數(shù)是不是NULL,如果不是的話,它們就關(guān)閉Connection、Statement和ResultSet。
? public static void closeQuietly(…): 這一類方法不僅能在Connection、Statement和ResultSet為NULL情況下避免關(guān)閉,還能隱藏一些在程序中拋出的SQLException。
? public static void commitAndCloseQuietly(Connection conn): 用來提交連接,然后關(guān)閉連接,并且在關(guān)閉連接時(shí)不拋出SQL異常。
? public static boolean loadDriver(java.lang.String driverClassName):這一方裝載并注冊(cè)JDBC驅(qū)動(dòng)程序,如果成功就返回true。使用該方法,你不需要捕捉這個(gè)異常ClassNotFoundException。
QueryRunner
l 該類簡(jiǎn)單化了SQL查詢,它與ResultSetHandler組合在一起使用可以完成大部分的數(shù)據(jù)庫(kù)操作,能夠大大減少編碼量。
l QueryRunner類提供了兩個(gè)構(gòu)造方法:
? 默認(rèn)的構(gòu)造方法(手動(dòng)管理事務(wù))
? 需要一個(gè) javax.sql.DataSource 來作參數(shù)的構(gòu)造方法。(自動(dòng)管理事物)
l 更新操作
? public int update(Connection conn, String sql, Object... params)
? public int update(String sql, Object... params)
l 查詢操作
? public Object query(Connection conn, String sql, ResultSetHandler<T> rsh, Object... params)
? public Object query(String sql, ResultSetHandler<T> rsh, Object... params)
ResultSetHandler
l 該接口用于處理 java.sql.ResultSet,將數(shù)據(jù)按要求轉(zhuǎn)換為另一種形式。
l ResultSetHandler 接口提供了一個(gè)單獨(dú)的方法:Object handle (java.sql.ResultSet .rs)。
ResultSetHandler 在DBUtils 框架中提供九個(gè)默認(rèn) 實(shí)現(xiàn)類,直接使用九個(gè)默認(rèn)實(shí)現(xiàn)類,可以完成常規(guī)操作,而不需要自定義結(jié)果集封裝
1) ArrayHandler 和 ArrayListHandler 將數(shù)據(jù)表的每行記錄保存Object[] 中
2) BeanHandler 和 BeanListHandler 將數(shù)據(jù)表每行記錄 保存JavaBean對(duì)象中
* 封裝javabean屬性時(shí),必須保證數(shù)據(jù)表列名與 javabean屬性名一致,否則無(wú)法封裝
3) MapHandler和 MapListHandler 將結(jié)果每行記錄保存到一個(gè)Map集合,key是列名,value是值
4) ColumnListHandler 查詢結(jié)果集中指定一列數(shù)據(jù)
5) KeyedHandler(name) 結(jié)果集每行數(shù)據(jù)封裝map,再將map存入另一個(gè)map 作為value,指定一列作為key
6) ScalarHandler 進(jìn)行單值查詢 select count(*) from account;
粵嵌科技創(chuàng)辦于2005年是一家IT高新技術(shù)企業(yè),專注IT職業(yè)教育13年,主要培訓(xùn)課程分別有嵌入式培訓(xùn)、Java培訓(xùn)、Unity游戲開發(fā)、Python人工智能、HTML5前端開發(fā)、全棧UI設(shè)計(jì)、網(wǎng)絡(luò)營(yíng)銷、CCIE網(wǎng)絡(luò)等專業(yè)課程,咨詢電話:020-61038927