DBUtils

一躺盛、DBUtils簡介

1、DBUtils是Apache Commons組件中的一員形帮,開源免費(fèi)
2槽惫、DBUtils是對JDBC的簡單封裝,但是它還是被很多公司使用
3辩撑、DBUtils的jar包:dbutils.jar

二界斜、DBUtils主要類

1、DbUtils:都是靜態(tài)方法合冀,一系列的close方法各薇;
2、QueryRunner:
(1)update():執(zhí)行insert君躺、update峭判、delete
(2)query():執(zhí)行select語句
(3)batch():執(zhí)行批處理

三、QueryRunner之更新

queryRunner的update()方法可以用來執(zhí)行insert棕叫、update林螃、delete語句
1、創(chuàng)建QueryRunner
構(gòu)造器:QueryRunner()俺泣;
2治宣、update()方法

@Test
public void fun1() throws SQLException {
    QueryRunner qr = new QueryRunner();
    String sql = "insert into user values(?,?,?)";
    qr.update(JdbcUtils.getConnection(), sql, "u1", "zhangSan", "123");
}

     
@Test
public void fun2() throws SQLException {
    QueryRunner qr = new QueryRunner(JdbcUtils.getDataSource());
    String sql = "insert into user values(?,?,?)";
    qr.update(sql, "u1", "zhangSan", "123");
}

在fun2()中急侥,在創(chuàng)建QueryRunner時傳遞了連接池對象,那么在調(diào)用update()方法時就不用再傳遞Connection了侮邀。

四坏怪、ResultSetHandler

在jdbc中執(zhí)行select語句之后會得到一個ResultSet,然后我們需要對ResultSet進(jìn)行轉(zhuǎn)換绊茧,得到最終我們想要的數(shù)據(jù)铝宵。你可能希望把ResultSet的數(shù)據(jù)放在一個list中、Map中华畏、Bean中鹏秋。DBUtils提供了一個接口ResultHandler,它就是用來把ResultSet轉(zhuǎn)換成目標(biāo)類型的工具亡笑。你可以自己去實(shí)現(xiàn)這個接口侣夷,把ResultSet轉(zhuǎn)換成你想要的類型。
(1)MapHandler:單行處理器仑乌!把結(jié)果集轉(zhuǎn)換成Map<String,Object>百拓,其中列名為鍵!
(2)MapListHandler:多行處理器晰甚!把結(jié)果集轉(zhuǎn)換成List<Map<String,Object>>衙传;
(3)BeanHandler:單行處理器!把結(jié)果集轉(zhuǎn)換成Bean厕九,該處理器需要Class參數(shù)蓖捶,即Bean的類型;
(4)BeanListHandler:多行處理器扁远!把結(jié)果集轉(zhuǎn)換成List<Bean>俊鱼;
(5)ColumnListHandler:多行單列處理器!把結(jié)果集轉(zhuǎn)換成List<Object>畅买,使用ColumnListHandler時需要指定某一列的名稱或編號并闲,例如:new ColumListHandler(“name”)表示把name列的數(shù)據(jù)放到List中。
(6)ScalarHandler:單行單列處理器皮获!把結(jié)果集轉(zhuǎn)換成Object焙蚓。一般用于聚集查詢纹冤,例如select count(*) from tab_student洒宝。

Map處理器

Map處理器

Bean處理器

Bean處理器

Column處理器

Column處理器

Scalar處理器

Scalar處理器

五、QueryRunner之查詢

QueryRunner的查詢方法是:
public <T> T query(String sql, ResultSetHandler<T> rh, Object… params)
public <T> T query(Connection con, String sql, ResultSetHandler<T> rh, Object… params)
query()方法會通過sql語句和params查詢出ResultSet萌京,然后通過rh把ResultSet轉(zhuǎn)換成對應(yīng)的類型再返回雁歌。

以下演示查詢數(shù)據(jù)庫中所有數(shù)據(jù),并將結(jié)果以MapListHandler()的形式打又小:

 @Test
public void fun2() throws SQLException {
    DataSource ds = JdbcUtils.getDataSource();
    QueryRunner qr = new QueryRunner(ds);
    String sql = "select * from tab_student";
    List<Map<String,Object>> list = qr.query(sql, new MapListHandler());
    for(Map<String,Object> map : list) {
        System.out.println(map);
    }
}

QueryRunner之批處理

QueryRunner還提供了批處理方法:batch()靠瞎。
我們更新一行記錄時需要指定一個Object[]為參數(shù),如果是批處理,那么就要指定Object[][]為參數(shù)了乏盐。即多個Object[]就是Object[][]了佳窑,其中每個Object[]對應(yīng)一行記錄:

  @Test
  public void fun10() throws SQLException {
DataSource ds = JdbcUtils.getDataSource();
QueryRunner qr = new QueryRunner(ds);
String sql = "insert into tab_student values(?,?,?,?)";
Object[][] params = new Object[10][];//表示 要插入10行記錄
for(int i = 0; i < params.length; i++) {
    params[i] = new Object[]{"S_300" + i, "name" + i, 30 + i, i%2==0?"男":"女"};
}
qr.batch(sql, params);
  }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市父能,隨后出現(xiàn)的幾起案子神凑,更是在濱河造成了極大的恐慌,老刑警劉巖何吝,帶你破解...
    沈念sama閱讀 222,627評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件溉委,死亡現(xiàn)場離奇詭異,居然都是意外死亡爱榕,警方通過查閱死者的電腦和手機(jī)瓣喊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,180評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來黔酥,“玉大人藻三,你說我怎么就攤上這事⌒跻” “怎么了趴酣?”我有些...
    開封第一講書人閱讀 169,346評論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長坑夯。 經(jīng)常有香客問我岖寞,道長,這世上最難降的妖魔是什么柜蜈? 我笑而不...
    開封第一講書人閱讀 60,097評論 1 300
  • 正文 為了忘掉前任仗谆,我火速辦了婚禮,結(jié)果婚禮上淑履,老公的妹妹穿的比我還像新娘。我一直安慰自己狸吞,他們只是感情好指煎,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,100評論 6 398
  • 文/花漫 我一把揭開白布至壤。 她就那樣靜靜地躺著,像睡著了一般黎棠。 火紅的嫁衣襯著肌膚如雪脓斩。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,696評論 1 312
  • 那天户魏,我揣著相機(jī)與錄音叼丑,去河邊找鬼扛门。 笑死,一個胖子當(dāng)著我的面吹牛星立,可吹牛的內(nèi)容都是我干的葬凳。 我是一名探鬼主播绰垂,決...
    沈念sama閱讀 41,165評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼劲装,長吁一口氣:“原來是場噩夢啊……” “哼昌简!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起纯赎,我...
    開封第一講書人閱讀 40,108評論 0 277
  • 序言:老撾萬榮一對情侶失蹤犬金,失蹤者是張志新(化名)和其女友劉穎念恍,沒想到半個月后峰伙,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體音同,經(jīng)...
    沈念sama閱讀 46,646評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡权均,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,709評論 3 342
  • 正文 我和宋清朗相戀三年恋沃,在試婚紗的時候發(fā)現(xiàn)自己被綠了必指。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片塔橡。...
    茶點(diǎn)故事閱讀 40,861評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖户辞,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情底燎,我是刑警寧澤弹砚,帶...
    沈念sama閱讀 36,527評論 5 351
  • 正文 年R本政府宣布桌吃,位于F島的核電站茅诱,受9級特大地震影響为流,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜敬察,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,196評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望尔当。 院中可真熱鬧莲祸,春花似錦椭迎、人聲如沸锐帜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,698評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至简软,卻和暖如春蛮拔,著一層夾襖步出監(jiān)牢的瞬間述暂,已是汗流浹背建炫。 一陣腳步聲響...
    開封第一講書人閱讀 33,804評論 1 274
  • 我被黑心中介騙來泰國打工肛跌, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留艺配,地道東北人。 一個月前我還...
    沈念sama閱讀 49,287評論 3 379
  • 正文 我出身青樓稳捆,卻偏偏與公主長得像酝掩,于是被迫代替她去往敵國和親期虾。 傳聞我的和親對象是個殘疾皇子驯嘱,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,860評論 2 361

推薦閱讀更多精彩內(nèi)容

  • 本文包括:1镶苞、DBUtils簡介2、DbUtils類3鞠评、QueryRunner類4茂蚓、ResultSetHandle...
    廖少少閱讀 20,704評論 1 24
  • JDBC框架——DBUtils 本文包括: 1、DBUtils簡介 2剃幌、DbUtils類 3聋涨、QueryRunne...
    加油小杜閱讀 893評論 0 1
  • 本文對apache dbutils項(xiàng)目的源碼進(jìn)行分析,目錄如下: 1负乡、基本使用 2牍白、DBUtilsy源碼分析 2....
    烽火戲碼農(nóng)閱讀 1,141評論 0 4
  • 一、JDBC連接池 概念:實(shí)際開發(fā)中“獲得連接”或“釋放資源”是非常消耗系統(tǒng)資源的兩個過程抖棘,為了解決這個問題茂腥,通過...
    zengsiyong閱讀 327評論 0 0
  • 幾十年如一日 洗衣服做飯 春種秋收夏鋤田 那些山川河流 綠油油滿是羊群的草原 車流不息 高樓林立的大都市 似乎都是...
    脆弱的唯美閱讀 414評論 0 1