JDBC連接池&DButils

一孵运、JDBC連接池

  • 概念:實(shí)際開(kāi)發(fā)中“獲得連接”或“釋放資源”是非常消耗系統(tǒng)資源的兩個(gè)過(guò)程螟够,為了解決這個(gè)問(wèn)題彤断,通過(guò)我們采用連接池技術(shù)怕品,來(lái)共享鏈接Connection妇垢,解決資源浪費(fèi),提高代碼性能肉康,代碼沒(méi)有節(jié)省

  • 規(guī)范:java為數(shù)據(jù)庫(kù)連接池提供了公共的接口 javax.sql.DataSource闯估,常見(jiàn)的連接池:DBCP\C3P0都用不同的方法實(shí)現(xiàn)了這個(gè)接口

二、C3P0連接池

  • 使用步驟
    1. 導(dǎo)入2個(gè)jar包

    2.配置文件設(shè)置參數(shù)
    配置文件名稱:c3p0-config.xml(固定)
    配置文件位置:src(類路徑)
    配置文件內(nèi)容:修改常見(jiàn)配置項(xiàng)包括必須項(xiàng)user吼和,password涨薪,diverClass(驅(qū)動(dòng),如com.mysql.jdbc.Driver)炫乓,jdbcUrl(mysql路徑,如jdbc:mysql://localhost:3306/數(shù)據(jù)庫(kù)名稱)和一些其他的基本配置項(xiàng)
    3.編寫工具類
    c3p0提供核心工具類:ComboPooledDataSource娄徊,要使用連接池就必須創(chuàng)建該類的實(shí)例對(duì)象(注意區(qū)分命名配置和默認(rèn)配置)
    此外,需要自己創(chuàng)建一個(gè)工具類泵肄,例如C3P0Utils楚堤,該類的代碼應(yīng)包括如下

三、使用DBUtils操作增刪改查

  • 概念:如果只使用JDBC開(kāi)發(fā)塔粒,會(huì)有大量冗余代碼结借,為了簡(jiǎn)化開(kāi)發(fā)就使用apache commons組件的成員之一:DBUtils(封裝了對(duì)JDBC的操作)
  • 三個(gè)核心功能
    1.QueryRunner中提供對(duì)sql語(yǔ)句操作的API
    2.ResultSetHandler接口,用于定義select操作后卒茬,怎樣封裝結(jié)果集
    3.DbUtils類船老,它就是一個(gè)工具類咖熟,定義了關(guān)閉資源與事務(wù)處理的方法

四、 QueryRunner核心類

  • QueryRunner(DataSource ds)柳畔,提供數(shù)據(jù)源(連接池)馍管,DBUtils底層自動(dòng)維護(hù)鏈接connection
  • update(String sql,Object..params)薪韩,執(zhí)行更新數(shù)據(jù)
  • 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()方法會(huì)通過(guò)sql語(yǔ)句和params查詢出ResultSet确沸,然后通過(guò)rh把ResultSet轉(zhuǎn)換成對(duì)應(yīng)的類型再返回

五、ResultSetHandler結(jié)果集處理類

  • 執(zhí)行select語(yǔ)句之后得到的是ResultSet俘陷,然后對(duì)ResultSet進(jìn)行轉(zhuǎn)換罗捎,得到最終我們想要的數(shù)據(jù)±埽可以把ResultSet的數(shù)據(jù)放到一個(gè)List中桨菜,也可以放到一個(gè)Map中,或是一個(gè)Bean中捉偏。
  • DBUtils提供了一個(gè)接口ResultSetHandler倒得,它就是用來(lái)將ResultSet轉(zhuǎn)換成目標(biāo)類型的工具。

    案例講解:
  • BeanListHandler的使用:


    image.png
  • BeanHandler的使用:
    該方法中調(diào)用query(sql,rsh,param)夭禽,其中第三個(gè)參數(shù)需要現(xiàn)在該方法括號(hào)內(nèi)聲明變量霞掺,且該方法直接聲明為Product類型,所以將查詢返回的單一的查詢結(jié)果直接return讹躯。


    image.png

六根悼、DBUtils工具類

closeQuietly(Connection conn)關(guān)閉連接,如果有異常try后不拋出
commitAndCloseQuietly(Connection conn)提交并關(guān)閉連接
rollbackAndCloseQuietly(Connection conn)回滾并關(guān)閉連接

綜合案例

  • 案例——?jiǎng)h除


  • 案例——查詢1
public void fun1() throws SQLException {
        DataSource ds = JdbcUtils.getDataSource();
        QueryRunner qr = new QueryRunner(ds);
        String sql = "select * from tab_student where number=?";
        Map<String,Object> map = qr.query(sql, new MapHandler(), "S_2000");
        System.out.println(map);
    }
  • 案例——查詢2
public void fun2() throws SQLException {
        DataSource ds = JdbcUtils.getDataSource();
        QueryRunner qr = new QueryRunner(ds);
        String sql = "select * from tab_student where number=?";
        Student stu = qr.query(sql, new BeanHandler<Student>(Student.class), "S_2000");
        System.out.println(stu);
    }

八蜀撑、JavaBean組件

  • 概念:JavaBean就是一個(gè)類挤巡,在開(kāi)發(fā)中常用于封裝數(shù)據(jù)
  • 特性
    1. 需要實(shí)現(xiàn)接口:java.io.Serializable (通常省略不寫)
    2. 提供私有字段:private 類型 字段名;
    3. 提供getter/setter方法
    4. 提供無(wú)參函數(shù)
  • 舉例


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市酷麦,隨后出現(xiàn)的幾起案子矿卑,更是在濱河造成了極大的恐慌,老刑警劉巖沃饶,帶你破解...
    沈念sama閱讀 211,817評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件母廷,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡糊肤,警方通過(guò)查閱死者的電腦和手機(jī)琴昆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)馆揉,“玉大人业舍,你說(shuō)我怎么就攤上這事。” “怎么了舷暮?”我有些...
    開(kāi)封第一講書人閱讀 157,354評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵态罪,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我下面,道長(zhǎng)复颈,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 56,498評(píng)論 1 284
  • 正文 為了忘掉前任沥割,我火速辦了婚禮耗啦,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘机杜。我一直安慰自己帜讲,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,600評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布叉庐。 她就那樣靜靜地躺著,像睡著了一般会喝。 火紅的嫁衣襯著肌膚如雪陡叠。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 49,829評(píng)論 1 290
  • 那天肢执,我揣著相機(jī)與錄音枉阵,去河邊找鬼。 笑死预茄,一個(gè)胖子當(dāng)著我的面吹牛兴溜,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播耻陕,決...
    沈念sama閱讀 38,979評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼拙徽,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了诗宣?” 一聲冷哼從身側(cè)響起膘怕,我...
    開(kāi)封第一講書人閱讀 37,722評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎召庞,沒(méi)想到半個(gè)月后岛心,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,189評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡篮灼,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,519評(píng)論 2 327
  • 正文 我和宋清朗相戀三年忘古,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片诅诱。...
    茶點(diǎn)故事閱讀 38,654評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡髓堪,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情旦袋,我是刑警寧澤骤菠,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布,位于F島的核電站疤孕,受9級(jí)特大地震影響商乎,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜祭阀,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,940評(píng)論 3 313
  • 文/蒙蒙 一鹉戚、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧专控,春花似錦抹凳、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,762評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至柏蘑,卻和暖如春幸冻,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背咳焚。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,993評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工洽损, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人革半。 一個(gè)月前我還...
    沈念sama閱讀 46,382評(píng)論 2 360
  • 正文 我出身青樓碑定,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親又官。 傳聞我的和親對(duì)象是個(gè)殘疾皇子延刘,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,543評(píng)論 2 349

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

  • 本文包括:1、DBUtils簡(jiǎn)介2六敬、DbUtils類3访娶、QueryRunner類4、ResultSetHandle...
    廖少少閱讀 20,605評(píng)論 1 24
  • JDBC概述 在Java中觉阅,數(shù)據(jù)庫(kù)存取技術(shù)可分為如下幾類:JDBC直接訪問(wèn)數(shù)據(jù)庫(kù)崖疤、JDO技術(shù)、第三方O/R工具典勇,如...
    usopp閱讀 3,533評(píng)論 3 75
  • 本文包括傳統(tǒng)JDBC的缺點(diǎn)連接池原理自定義連接池開(kāi)源數(shù)據(jù)庫(kù)連接池DBCP連接池C3P0連接池Tomcat內(nèi)置連接池...
    廖少少閱讀 16,730評(píng)論 0 37
  • JDBC框架——DBUtils 本文包括: 1劫哼、DBUtils簡(jiǎn)介 2、DbUtils類 3割笙、QueryRunne...
    加油小杜閱讀 878評(píng)論 0 1
  • 前言: 從事Android開(kāi)發(fā)一年半啦权烧,只知道每天按照需求計(jì)劃實(shí)現(xiàn)業(yè)務(wù)的邏輯眯亦,其實(shí)我知道我最差的就是繪制圖形,所以...
    林天佐閱讀 216評(píng)論 0 0