這篇文章主要介紹了Apache Commons DbUtils工具包使用介紹,本文介紹了DBUtils是什么東西、熟悉DBUtils的一些問題匈勋、API介紹等內(nèi)容,需要的朋友可以參考下
一礼旅、介紹
DBUtils是個小巧的JDBC輕量級封裝的工具包,其最核心的特性是在JDBC的基礎(chǔ)上做了一層封裝洽洁,主要是對結(jié)果集的封裝痘系,可以直接將查詢出來的結(jié)果集封裝成JavaBean,旨在簡化JDBC代碼混亂與重復(fù)饿自。
JDBC代碼開發(fā)汰翠,存在很多難點:
1)操作過程復(fù)雜,代碼操作一個模式昭雌,大量的重復(fù)复唤。
2)結(jié)果集難以處理。
3)到處都強制檢查SQLException烛卧,影響代碼的美觀和可讀性佛纫。
二、熟悉DBUtils
在使用DBUtils之前总放,應(yīng)該注意一些問題:
1)DBUtils是JDBC的簡單封裝呈宇,可以和JDBC混合使用。
2)DBUtils對結(jié)果集自動封裝為JavaBean是有著苛刻要求的:
必須滿足JavaBean的規(guī)范局雄;
其次Bean的getter與setter方法的名字與結(jié)果集的列名必須一一對應(yīng)攒盈;
不要求JavaBean的私有成員與表結(jié)果集列名一一對應(yīng)。
3)DBUtils可以將結(jié)果集封裝為各種類型
主要有:Bean/List哎榴,Map/List/Map,數(shù)組/List<數(shù)組>僵蛛,列/List<列>尚蝌,這些類型。
對于Map的類型使用KeyedHandler作為結(jié)果集處理器充尉,內(nèi)層的Map是“列名-值"對飘言,外層的Map是“主鍵-內(nèi)層Map的引用”,但此處的主鍵不一定就是數(shù)據(jù)庫的主鍵驼侠,可以隨意指定姿鸿。
4)DBUtils執(zhí)行插入操作的時候谆吴,無法返回自增主鍵,這是一個很嚴重的問題苛预,當然不能怪DBUtils句狼,可以通過變通的方法來實現(xiàn),比如在MySQL中热某,執(zhí)行完了一個插入SQL后腻菇,接著執(zhí)行SELECT LAST_INSERT_ID()語句,就可以獲取到自增主鍵昔馋。
5)DBUtils的性能和JDBC性能是一樣筹吐,測試過程中沒發(fā)現(xiàn)性能損失,擁有了很高性能的同時秘遏,而不失JDBC的靈活性坤邪。
6)對于JavaBean的成員類型定義筒溃,有一條原則那就是:盡可能使用包裝類型,而不要使用基本類型。
三夜牡、API介紹
1、org.apache.commons.dbutils包
DbUtils:一個為簡化JDBC操作的小類庫
AbstractQueryRunner:是抽象類结蟋,QueryRunner和AsyncQueryRunner類的基類招刹。
AsyncQueryRunner:可插拔的方式執(zhí)行SQL查詢,處理結(jié)果集审丘。是線程安全的類吏够。
BaseResultSetHandler:把結(jié)果集轉(zhuǎn)換成其它對象的擴展。
BeanProcessor:BeanProcessor匹配列名到Bean屬性名滩报,并轉(zhuǎn)換結(jié)果集列到Bean對象的屬性中锅知。
Dbutils:一個JDBC輔助工具集合。
GenerousBeanProcessor:提供了從數(shù)據(jù)庫列名到JavaBean屬性之間的智能匹配脓钾。
ProxyFactory:產(chǎn)生JDBC接口的代理實現(xiàn)售睹。
QueryLoader:屬性文件加載器,主要用于加載屬性文件中的SQL到內(nèi)存中可训。
QueryRunner:使用可插拔的策略執(zhí)行SQL查詢并處理結(jié)果集昌妹。
ResultSetHandler:把ResultSet轉(zhuǎn)換為別的對象的工具。
ResultSetIterator:包裝結(jié)果集為一個迭代器握截。
RowProcessor:將ResultSet行轉(zhuǎn)換為別的對象的工具飞崖。
2、org.apache.commons.dbutils.handlers包
AbstractKeyedHandler:KeyedHandler的抽象類谨胞。
AbstractListHandler:簡化ResultSetHandler類開發(fā)的抽象類固歪,把結(jié)果集轉(zhuǎn)換成List。
ArrayHandler:把結(jié)果集中的第一行數(shù)據(jù)轉(zhuǎn)成對象數(shù)組胯努。
ArrayListHandler:把結(jié)果集中的每一行數(shù)據(jù)都轉(zhuǎn)成一個對象數(shù)組牢裳,再存放到List中逢防。
BeanHandler:將結(jié)果集中的第一行數(shù)據(jù)封裝到一個對應(yīng)的JavaBean實例中。
BeanListHandler:將結(jié)果集中的每一行數(shù)據(jù)都封裝到一個對應(yīng)的JavaBean實例中蒲讯,存放到List里忘朝。
BeanMapHandler:實現(xiàn)了Bean返回Map集合。結(jié)果集所有的行都會轉(zhuǎn)換成Bean伶椿,并根據(jù)指定的Key存儲到Map中辜伟。
文章來源:http://www.iis7.com/c/90/