Apache—DBUtils

commons-dbutils 是 Apache 組織提供的一個(gè)開源 JDBC工具類庫(kù),它是對(duì)JDBC的簡(jiǎn)單封裝,學(xué)習(xí)成本極低,并且使用dbutils能極大簡(jiǎn)化jdbc編碼的工作量,同時(shí)也不會(huì)影響程序的性能。
API介紹:
org.apache.commons.dbutils.QueryRunner
org.apache.commons.dbutils.ResultSetHandler
工具類
org.apache.commons.dbutils.DbUtils

DbUtils類
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)閉,還能隱藏一些在程序中拋出的SQLEeception。
  • 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類
該類簡(jiǎn)單化了SQL查詢,它與ResultSetHandler組合在一起使用可以完成大部分的數(shù)據(jù)庫(kù)操作,能夠大大減少編碼量。
QueryRunner類提供了兩個(gè)構(gòu)造方法:
默認(rèn)的構(gòu)造方法
需要一個(gè) javax.sql.DataSource 來作參數(shù)的構(gòu)造方法。
QueryRunner類的主要方法

  • public Object query(Connection conn, String sql, Object[] params, ResultSetHandler rsh) throws SQLException:執(zhí)行一個(gè)查詢操作,在這個(gè)查詢中,對(duì)象數(shù)組中的每個(gè)元素值被用來作為查詢語句的置換參數(shù)。該方法會(huì)自行處理 PreparedStatement 和 ResultSet 的創(chuàng)建和關(guān)閉。
  • public Object query(String sql, Object[] params, ResultSetHandler rsh) throws SQLException: 幾乎與第一種方法一樣;唯一的不同在于它不將數(shù)據(jù)庫(kù)連接提供給方法,并且它是從提供給構(gòu)造方法的數(shù)據(jù)源(DataSource) 或使用的setDataSource 方法中重新獲得 Connection。
  • public Object query(Connection conn, String sql, ResultSetHandler rsh) throws SQLException : 執(zhí)行一個(gè)不需要置換參數(shù)的查詢操作。
  • public int update(Connection conn, String sql, Object[] params) throws SQLException:用來執(zhí)行一個(gè)更新(插入、更新或刪除)操作。
  • public int update(Connection conn, String sql) throws SQLException:用來執(zhí)行一個(gè)不需要置換參數(shù)的更新操作。

ResultSetHandler接口
該接口用于處理 java.sql.ResultSet,將數(shù)據(jù)按要求轉(zhuǎn)換為另一種形式。
ResultSetHandler 接口提供了一個(gè)單獨(dú)的方法:Object handle (java.sql.ResultSet .rs)。

ResultSetHandler 接口的實(shí)現(xiàn)類

  • ArrayHandler:把結(jié)果集中的第一行數(shù)據(jù)轉(zhuǎn)成對(duì)象數(shù)組。
  • ArrayListHandler:把結(jié)果集中的每一行數(shù)據(jù)都轉(zhuǎn)成一個(gè)數(shù)組,再存放到List中。
  • BeanHandler:將結(jié)果集中的第一行數(shù)據(jù)封裝到一個(gè)對(duì)應(yīng)的JavaBean實(shí)例中。
  • BeanListHandler:將結(jié)果集中的每一行數(shù)據(jù)都封裝到一個(gè)對(duì)應(yīng)的JavaBean實(shí)例中,存放到List里。
  • ColumnListHandler:將結(jié)果集中某一列的數(shù)據(jù)存放到List中。
  • KeyedHandler(name):將結(jié)果集中的每一行數(shù)據(jù)都封裝到一個(gè)Map里,再把這些map再存到一個(gè)map里,其key為指定的key。
  • MapHandler:將結(jié)果集中的第一行數(shù)據(jù)封裝到一個(gè)Map里,key是列名,value就是對(duì)應(yīng)的值。
  • MapListHandler:將結(jié)果集中的每一行數(shù)據(jù)都封裝到一個(gè)Map里,然后再存放到List
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 本文包括:1、DBUtils簡(jiǎn)介2、DbUtils類3、QueryRunner類4、ResultSetHandle...
    廖少少閱讀 20,995評(píng)論 1 24
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,728評(píng)論 18 399
  • JDBC概述 在Java中,數(shù)據(jù)庫(kù)存取技術(shù)可分為如下幾類:JDBC直接訪問數(shù)據(jù)庫(kù)、JDO技術(shù)、第三方O/R工具,如...
    usopp閱讀 3,640評(píng)論 3 75
  • 本文對(duì)apache dbutils項(xiàng)目的源碼進(jìn)行分析,目錄如下: 1、基本使用 2、DBUtilsy源碼分析 2....
    烽火戲碼農(nóng)閱讀 1,242評(píng)論 0 4
  • 最近在學(xué)習(xí)股市里的纏論,接觸越深,越是感覺到自然萬物冥冥之中總是存在著通用的規(guī)律。 就我目前的認(rèn)知水平,纏論的核心...
    HelloToo閱讀 1,339評(píng)論 0 0

友情鏈接更多精彩內(nèi)容