麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發(fā) > 綜合 > 正文

Apache Commons DbUtils使用手冊(cè)

2024-07-21 02:52:29
字體:
供稿:網(wǎng)友

from http://blog.csdn.net/chszs/article/details/43051089

一、介紹

DBUtils是個(gè)小巧的JDBC輕量級(jí)封裝的工具包,其最核心的特性是在JDBC的基礎(chǔ)上做了一層封裝,主要是對(duì)結(jié)果集的封裝,可以直接將查詢出來的結(jié)果集封裝成javaBean,旨在簡化JDBC代碼混亂與重復(fù)。JDBC代碼開發(fā),存在很多難點(diǎn):1)操作過程復(fù)雜,代碼操作一個(gè)模式,大量的重復(fù)。2)結(jié)果集難以處理。3)到處都強(qiáng)制檢查SQLException,影響代碼的美觀和可讀性。二、熟悉DBUtils在使用DBUtils之前,應(yīng)該注意一些問題:1)DBUtils是JDBC的簡單封裝,可以和JDBC混合使用。2)DBUtils對(duì)結(jié)果集自動(dòng)封裝為JavaBean是有著苛刻要求的:必須滿足JavaBean的規(guī)范;其次Bean的getter與setter方法的名字與結(jié)果集的列名必須一一對(duì)應(yīng);不要求JavaBean的私有成員與表結(jié)果集列名一一對(duì)應(yīng)。3)DBUtils可以將結(jié)果集封裝為各種類型主要有:Bean/List<Bean>,Map/List<Map>/Map<Map>,數(shù)組/List<數(shù)組>,列/List<列>,這些類型。對(duì)于Map<Map>的類型使用KeyedHandler作為結(jié)果集處理器,內(nèi)層的Map是“列名-值"對(duì),外層的Map是“主鍵-內(nèi)層Map的引用”,但此處的主鍵不一定就是數(shù)據(jù)庫的主鍵,可以隨意指定。4)DBUtils執(zhí)行插入操作的時(shí)候,無法返回自增主鍵,這是一個(gè)很嚴(yán)重的問題,當(dāng)然不能怪DBUtils,可以通過變通的方法來實(shí)現(xiàn),比如在MySQL中,執(zhí)行完了一個(gè)插入SQL后,接著執(zhí)行SELECT LAST_INSERT_ID()語句,就可以獲取到自增主鍵。5)DBUtils的性能和JDBC性能是一樣,測(cè)試過程中沒發(fā)現(xiàn)性能損失,擁有了很高性能的同時(shí),而不失JDBC的靈活性。

6)對(duì)于JavaBean的成員類型定義,有一條原則那就是:盡可能使用包裝類型,而不要使用基本類型。

作者:chszs,轉(zhuǎn)載需注明。博客主頁:http://blog.csdn.net/chszs

三、API介紹

1、org.apache.commons.dbutils包

DbUtils:一個(gè)為簡化JDBC操作的小類庫

AbstractQueryRunner:是抽象類,QueryRunner和AsyncQueryRunner類的基類。AsyncQueryRunner:可插拔的方式執(zhí)行SQL查詢,處理結(jié)果集。是線程安全的類。BaseResultSetHandler:把結(jié)果集轉(zhuǎn)換成其它對(duì)象的擴(kuò)展。BeanPRocessor:BeanProcessor匹配列名到Bean屬性名,并轉(zhuǎn)換結(jié)果集列到Bean對(duì)象的屬性中。Dbutils:一個(gè)JDBC輔助工具集合。GenerousBeanProcessor:提供了從數(shù)據(jù)庫列名到JavaBean屬性之間的智能匹配。ProxyFactory:產(chǎn)生JDBC接口的代理實(shí)現(xiàn)。QueryLoader:屬性文件加載器,主要用于加載屬性文件中的SQL到內(nèi)存中。QueryRunner:使用可插拔的策略執(zhí)行SQL查詢并處理結(jié)果集。ResultSetHandler:把ResultSet轉(zhuǎn)換為別的對(duì)象的工具。ResultSetIterator:包裝結(jié)果集為一個(gè)迭代器。RowProcessor:將ResultSet行轉(zhuǎn)換為別的對(duì)象的工具。

2、org.apache.commons.dbutils.handlers包

AbstractKeyedHandler:KeyedHandler的抽象類。

AbstractListHandler:簡化ResultSetHandler類開發(fā)的抽象類,把結(jié)果集轉(zhuǎn)換成List。ArrayHandler:把結(jié)果集中的第一行數(shù)據(jù)轉(zhuǎn)成對(duì)象數(shù)組。ArrayListHandler:把結(jié)果集中的每一行數(shù)據(jù)都轉(zhuǎn)成一個(gè)對(duì)象數(shù)組,再存放到List中。BeanHandler:將結(jié)果集中的第一行數(shù)據(jù)封裝到一個(gè)對(duì)應(yīng)的JavaBean實(shí)例中。BeanListHandler:將結(jié)果集中的每一行數(shù)據(jù)都封裝到一個(gè)對(duì)應(yīng)的JavaBean實(shí)例中,存放到List里。BeanMapHandler:實(shí)現(xiàn)了Bean返回Map集合。結(jié)果集所有的行都會(huì)轉(zhuǎn)換成Bean,并根據(jù)指定的Key存儲(chǔ)到Map中。ColumnListHandler:將結(jié)果集中某一列的數(shù)據(jù)存放到List中。KeyedHandler:將結(jié)果集中的每一行數(shù)據(jù)都封裝到一個(gè)Map里,然后再根據(jù)指定的key把每個(gè)Map再存放到一個(gè)Map里。MapHandler:將結(jié)果集中的第一行數(shù)據(jù)封裝到一個(gè)Map里,key是列名,value就是對(duì)應(yīng)的值。MapListHandler:將結(jié)果集中的每一行數(shù)據(jù)都封裝到一個(gè)Map里,然后再存放到List。ScalarHandler:將結(jié)果集中某一條記錄的其中某一列的數(shù)據(jù)存成Object。

3、org.apache.commons.dbutils.wrappers包

SqlNullCheckedResultSet:在每個(gè)getXXX方法上檢查SQL NULL值的ResultSet包裝類。

StringTrimmedResultSet:刪除結(jié)果集中字符串前后空格的ResultSet包裝類。

作者:chszs,轉(zhuǎn)載需注明。博客主頁:http://blog.csdn.net/chszs

四、重要類詳述

1、DbUtils類

DbUtils提供如關(guān)閉連接、裝載JDBC驅(qū)動(dòng)程序等常規(guī)工作的工具類,里面的所有方法都是靜態(tài)的。

主要方法如下:1)public static void close(...) throws SQLExceptionDbUtils類提供了三個(gè)重載的close方法。這些方法檢查所提供的參數(shù)是不是NULL,如果為空,就關(guān)閉Connection、Statement和ResultSet。2)public static void closeQuietly(...)bUtils類提供了四個(gè)重載的closeQuietly方法。這一類方法不僅能在Connection、Statement和ResultSet為NULL情況下避免關(guān)閉,還能隱藏一些在程序中拋出的SQLEeception。3)public static void commitAndCloseQuietly(Connection conn)在連接內(nèi)提交SQL,然后關(guān)閉連接,并且在關(guān)閉連接時(shí)不拋出SQL異常。4)public static boolean loadDriver(String driverClassName)此方法載入并注冊(cè)JDBC驅(qū)動(dòng),如果成功就返回true,失敗返回false。使用該方法,無需捕捉ClassNotFoundException異常。

2、QueryRunner類

QueryRunner類簡化了SQL查詢,它與ResultSetHandler組合在一起使用可完成大多數(shù)數(shù)據(jù)庫操作,能夠大量減少代碼量。

QueryRunner類提供了兩個(gè)構(gòu)造方法1)默認(rèn)的構(gòu)造方法2)需要一個(gè)javax.sql.DataSource來作參數(shù)的構(gòu)造方法。

3、QueryRunner類的主要方法

1)public Object query(Connection conn, String sql, Object[] params, ResultSetHandler rsh) throws SQLException

執(zhí)行一個(gè)查詢操作,在此查詢中,對(duì)象數(shù)組中的每個(gè)元素值被用來作為查詢語句的置換參數(shù)。此方法會(huì)自行處理PreparedStatement和ResultSet的創(chuàng)建和關(guān)閉。2)public Object query(String sql, Object[] params, ResultSetHandler rsh) throws SQLException幾乎與第一種方法一樣;唯一的不同在于它不將數(shù)據(jù)庫連接提供給方法,并且它是從提供給構(gòu)造方法的數(shù)據(jù)源(DataSource) 或使用的setDataSource方法中重新獲得Connection。3)public Object query(Connection conn, String sql, ResultSetHandler rsh) throws SQLException執(zhí)行一個(gè)不需要置換參數(shù)的查詢操作。4)public int update(Connection conn, String sql, Object[] params) throws SQLException用來執(zhí)行一個(gè)更新(插入、更新或刪除)操作。5)public int update(Connection conn, String sql) throws SQLException用于執(zhí)行一個(gè)不需要置換參數(shù)的更新操作。6)insert插入方法7)batch批處理方法
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 欧美在线观看视频一区二区 | 欧美一级特级 | 成人在线观看免费 | 免看黄大片aa | 国内毛片视频 | 操操操日日日干干干 | 欧美性黄| 免费一级欧美大片视频在线 | 国产精品一区二区三区在线播放 | 国产色视频免费 | 国产精品www | 91美女视频在线观看 | 美女亚洲| 精品在线视频播放 | 免费黄色大片在线观看 | 成人aaaaa片毛片按摩 | av手机免费在线观看 | 国产精品午夜小视频观看 | 国产乱乱视频 | 一区二区久久久久草草 | 内地av在线 | 999久久久精品 | 毛片在线免费观看网址 | h色视频在线观看 | 性高湖久久久久久久久aaaaa | 91色综合综合热五月激情 | 毛片在线视频观看 | 中国hdxxxx护士爽在线观看 | 中文字幕在线观看亚洲 | 色综合久久久久久久久久久 | 欧美一级欧美 | 亚洲精品免费播放 | 亚洲欧美国产高清va在线播放 | 黄色av网站在线观看 | 羞羞网站在线观看入口免费 | 青青草在线免费观看 | 草碰人人 | 亚洲免费视 | 久草在线最新 | 看a级毛片 | 日本在线播放一区二区三区 |