国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

DbUtils(一) 結(jié)果集概覽

2019-11-14 22:51:41
字體:
供稿:網(wǎng)友
DbUtils(一) 結(jié)果集概覽

記錄自己對(duì)DbUtils的學(xué)習(xí)和了解

我感覺Dbutils用的最多的就是對(duì)查詢結(jié)果集的處理,就以這個(gè)開始了解Dbutils庫。

查看源代碼發(fā)現(xiàn)結(jié)果集的轉(zhuǎn)換主要用于query,insert,insertBatch方法。

// 僅僅列出QueryRunner類的相關(guān)代碼,其他略過//-----------源碼1 query方法 ------------------    stmt = this.PRepareStatement(conn, sql);    this.fillStatement(stmt, params);    rs = this.wrap(stmt.executeQuery());    result = rsh.handle(rs); // 處理結(jié)果集//-----------源碼2 insert方法 ------------------    stmt = conn.prepareStatement(sql, tatement.RETURN_GENERATED_KEYS);
    this.fillStatement(stmt, params);    stmt.executeUpdate();    ResultSet resultSet = stmt.getGeneratedKeys();    generatedKeys = rsh.handle(resultSet); // 處理結(jié)果集//-----------源碼3 insertBatch方法 ------------------    ResultSet rs = stmt.getGeneratedKeys();    generatedKeys = rsh.handle(rs); // 處理結(jié)果集

對(duì)ResultSet的轉(zhuǎn)換主要圍繞兩個(gè)接口展開(ResultSetHandler<T> RowProcessor)。

1、ResultSetHandler<T> ,關(guān)系圖如下:

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

接口 ResultSetHandler 只有一個(gè)需要實(shí)現(xiàn)的方法 handle(ResultSet rs),我的理解這個(gè)方法是處理結(jié)果集的一個(gè)入口,每個(gè)結(jié)果集轉(zhuǎn)換類都在自己的 handle 方法中處理自己的事情,這個(gè)可從前面的源碼1、2、3中看出來,都是調(diào)用實(shí)現(xiàn)類的handle方法,再返回結(jié)果。

ResultSetHandler 的實(shí)現(xiàn)類(結(jié)果集轉(zhuǎn)換類)在 handle 方法中實(shí)現(xiàn)對(duì)結(jié)果集的處理,大部分會(huì)涉及到另一個(gè)接口 RowProcessor 及其實(shí)現(xiàn)類 BasicRowProcessor

2、RowProcessor,關(guān)系圖如下:

RowProcessor

RowProcessor 接口有4個(gè)需要實(shí)現(xiàn)的方法,具體用途可以很直觀的從方法名中看出來。這幾個(gè)方法都在結(jié)果轉(zhuǎn)換類的 handle 方法中調(diào)用。需要注意如果需要將結(jié)果集轉(zhuǎn)換為Bean,那么還會(huì)涉及到一個(gè)類 BeanProcessor 的使用。

3、ResultSetHandler 和 RowProcessor 的關(guān)系

diagram2

圖雖然有點(diǎn)亂,湊合看也能看清楚。大部分的結(jié)果集都持有一個(gè) RowProcessor 接口的引用。需要注意的是 ArrayHandler 這個(gè)類,因?yàn)槠渌?RowProcessor 的引用都是從這個(gè)類獲取的,這個(gè)類建立了 RowProcessor 實(shí)現(xiàn)類 BasicRowProcessor 的對(duì)象。

需要注意其中的3個(gè)抽象類(AbstractKeyedHandler、AbstractListHandler、BaseResultSetHandler),它們的派生類才是可以使用的結(jié)果轉(zhuǎn)換類。根據(jù)文檔的說明,如果官方提供的這些轉(zhuǎn)換類都不能滿足你的要求,可以通過繼承 BaseResultSetHandler 實(shí)現(xiàn)自己的結(jié)果集轉(zhuǎn)換類。


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 日照市| 腾冲县| 新昌县| 成都市| 陇川县| 库车县| 荣昌县| 永平县| 宿州市| 湘乡市| 克拉玛依市| 莱芜市| 凤翔县| 德庆县| 江油市| 金沙县| 武宣县| 韶山市| 萍乡市| 和平县| 昭觉县| 环江| 屯门区| 绥德县| 天台县| 秭归县| 安多县| 高邮市| 呼玛县| 清流县| 富锦市| 湟中县| 宁国市| 肥乡县| 客服| 察隅县| 凤翔县| 尤溪县| 凤冈县| 万盛区| 望都县|