1. 程式人生 > >JDBC與C3p0 dbutils 的結合

JDBC與C3p0 dbutils 的結合

需求:使用c3p0 連線池 完成curd 操作

分析:之前寫了一個工具類(註冊驅動,獲取連線,釋放資源)------(沒有連線池的時候) 現在寫一個升級版的連線池(獲取連線池,獲取連線,釋放資源—(使用C3p0 連線池) 要使用 關於使用:自己寫了這樣一個工具類,可以像之前使用jdbc 的工具類那樣,單純的使用他的靜態方法。補充一點:dbuntils 是apeach 組織的一個工具類,一個框架(封裝了各種方法,方便我們的使用)是程式碼更加的簡單,要想這樣使用就要匯入jar 包,使用queryrunneryong 類 dbutils 的使用步驟:

1.的匯入jar 包(commnos-dbutils- .jar) 2.建立一個queryrunner 類的物件:操作sql 語句 new QueryRunner(DataSource ds); 傳入一個連線池 3.編寫sql 語句’ 4.執行sql a.query(…) : 執行r 查詢操作 b. update(…) : 執行cud 操作

程式碼:

     *@使用dbutils 實現curd
     */
    @Test
    public void Insert() throws SQLException {
        //建立一個QueryRunner
    QueryRunner qr = new QueryRunner(dbutils.getDataSource());
        //編寫sql語句
        String sql = "insert into st values(?,?)";
        //執行sql語句
        qr.update(sql,"S_1005","毒藥");
    }
}

///////////////////////////////////////////////////////////////////////////////// 核心類或者是介面: 1.QueryRunner:操作sql 語句 new QueryRunner(DataSource ds); 注意:底層會幫我們建立連線,建立語句執行者,釋放資源 常用方法:query(…) update(…) 2.DbUtils:釋放資源,控制事務 3.ResultSetHandlder :封裝結果集(查詢) 是一個介面 有九個結果集: ArrayHandler 將查詢到的結果的第一條記錄封裝成陣列 ArrayListhandler 將查詢結果的每一條記錄封裝成陣列,將每一個數組放入List 中返回 !! BeanHandler 將查詢的結果的第一條記錄封裝成指定 物件,返回 !!BeanListHandler 將查詢結果的每一條記錄封裝成指定物件,將每一個bean 物件放入List 集合中 ColumListHandler 將查詢結果的指定一列放入list 中返回 MapHandler 將查詢結果的第一條記錄封裝成map 欄位名為 key 值value 返回 !!MapListHandler 將查詢結果的每一條記錄封裝成Map集合再儲存到List 集合中 !!ScalarHandler 針對於聚合函式 例如:count() 返回的是long 值

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 使用dbutils 工具類(框架),配置檔案,c3p0 連線池 QueryRunner qr = new QueryRunner(dbutils.getDataSource()); 這一句的底層: 1.在dbutils 工具類中有 new CombopooledDataSource() 會自動讀取配置檔案 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// **

關於JDBC的總結:

** JDBC 總結: jdbc: java 語言操作資料庫 jdbc是oracle 公司指定的一套規範 驅動:jdbc的實現類,有資料庫廠商提供 jdbc 操作步驟: 1.匯入jar 包 2.註冊驅動 3.獲取連線 4.編寫sql 語句 5.獲取語句執行者 PreparedStatement st = conn.prepareStatement(sql); 6.設定引數 st.setxxx(int 第幾個問號,object 實參) 7.執行sql int i = st.executeUpdate(); ResultSet rs = st.executeQuery(); 8.處理結果 ResultSet: while(rs.next()){ rs.getXXX(int|String) } 9.釋放資源

/////////////////////////////////////// 寫自己的工具類完成註冊驅動,獲取連線,釋放資源 使用配置檔案: 獲取src 目錄下的properties 格式的配置檔案 ResourceBundle bundle = ResourceBundle.getBundle(“不帶字尾名的檔名”) String value = bundle.getString(“key”); ///////////////////////////////// 自定義連線池: 增強函式的方法: 1.繼承 2.裝飾者模式 3.動態模式 ////////////////////////////////////////// 裝飾者模式(靜態代理) 1.裝飾著和被裝飾者有繼承或者是實現同一個類或者是介面 2.在裝飾者中要有被裝飾者的引用 3.對需要增強的方法進行加強,不需要加強的方法呼叫原來的方法

將自定義的連線池加上裝飾者模式(將close 方法進行加強)就是優化的連線池 ///////////////////////////////////////////////////// 常見的連線池: dbcp:瞭解 C3P0:重點掌握 使用配置檔案: 檔名:c3p0.properties 或者是 c3p0-config.xml 檔案的內容書寫也是有要求的 檔案的位置:src 目錄下 使用方法: 1.直接 new CombopooledDataSource(); 在設定四個引數:driverClass url user password 2.getConnection 獲取連線 3.編寫sql語句 4.獲取執行者 PreparedStatement pr = conn.preparedStatement(); ///////////////////////////要掌握使用的 dbutils :工具類,封裝類jdbc 的操作 是對資料的操作更加的簡單,之前的那些方法都是一些原理,使用dbutils 才是我們會使用的方法 使用步驟: 1.匯入jar 包 2.建立queryRunner 類 3.編寫sql 語句 4.執行sql 語句 QueryRunner :操作sql語句 構造器:new queryRunner(DataSource ds);//傳入一個連線池 底層為我們獲取連線,建立語句執行者,釋放資源 配合使用的是dbutils 工具類 常用方法: query(…) update(…) ResultSetHandler:封裝結果集 BeanHandler BeanListHandler MapListhandler Scalarhandler