1. 程式人生 > >java基礎之JDBC九:DbUtils的簡介及使用

java基礎之JDBC九:DbUtils的簡介及使用

AI static 對象 str 數據存儲 之前 java基礎 nbsp 行數

DbUtils是Apache組織提供的一個對JDBC進行簡單封裝的開源工具類庫,使用它能夠簡化JDBC應用程序的開發,同時也不會影響程序的性能。

使用步驟:

A: 獲取可以執行SQL語句的對象.
    public QueryRunner();
    public QueryRunner(DataSource ds);    //如果需要用到連接池對象了, 會自動從數據庫連接池中獲取.

B: 執行SQL語句, 獲取結果集.
    *** query(String sql,ResultSetHandler rsh, Object... values);        //執行查詢語句
ResultSetHandler: //是一個接口, 表示對 結果集的處理方式, 傳入的參數不同, 返回值也不同. int update(String sql,Object... values); //執行更新語句 C: 操作結果集. //可變參數的底層其實是一個: 數組. ResultSetHandler接口的子類: ArrayHandler 將結果集第一行轉成對象數組 Object[] ArrayListHandler List
<Object[]> 將結果集中的每一行數據都轉成一個對象數組,再將轉成的多個對象數組存放到List中 BeanHandler 將結果集第一行數據封裝到一個對應的業務類實例中 // new BeanHandler<業務類的類型>(業務類的字節碼文件對象); // new BeanHandler<Ledger>(Ledger.class); BeanListHandler 將結果集中的每一行數據都封裝到一個對應的業務類實例中,再將多個業務類實例對象存放到List裏。
// new BeanListHandler<業務類的類型>(業務類的字節碼文件對象); // new BeanListHandler<Ledger>(Ledger.class); MapHandler 將結果集中的第一行數據封裝到一個Map中,key是列名 String ,value是對應的值 Obje MapListHandler 將結果集中的每一行數據都封裝到一個Map裏,然後再將多個Map存放到List ColumnListHandler 將結果集中的指定列的數據存儲到List集合 //new ColumnListHandler<該列的類型_寫的是引用類型>(列名); //new ColumnListHandler<Double>("money"); ScalarHandler 進行單值查詢,如:select count(*) from //一行一列 //new ScalarHandler<該列的類型_寫的是引用類型>(列名); //new ScalarHandler<Long>("counts"); 求滿足條件的數據共有多少行 KeyedHandler 將結果集中的每一行數據都封裝為一個Map(Map<String,Object>), 再將這些Map再存到一個Map裏,其key為KeyedHandler指定的列, 如果沒有指定則使用第一個查詢的字段。 /* 1 2 3 4 Map <String,Map<String,Object>> map= qr.query(conn, sql, new KeyedHandler<String>("lid")); 1:代表的是 傳入的指定的列名(要求不能重復,一般傳的是主鍵) 2:代表的是 數據庫表中的每一行數據(列名做鍵,具體的數據做值) 3:代表的是 傳入的指定的列的 數據類型 4:代表的是 傳入的指定的列 */

使用DbUtils執行更新操作:

/**
 * 使用DbUtils執行更新操作
 * 使用之前需要導入jar包
 */
public class Test06 {
    public static void main(String[] args) {
        //獲取可執行sql語句的對象
        //這裏構造函數裏需要傳一個連接池對象 我們使用之前封裝的C3P0簡單工具類獲取一個連接池對象
        QueryRunner qr = new QueryRunner(C3P0SimpleUtils.getDataSource());
        //執行sql語句 獲取返回結果
        String sql = "UPDATE users SET psw = ? WHERE uid = ?";
        try {
            Object[] obj = {null, "亞索", "hasagei"};
            int num = qr.update(sql, obj);
            System.out.println(num > 0 ? "添加成功" : "添加失敗");
        } catch (SQLException e) {
            e.printStackTrace();
        }
        //不用再close了 因為DbUtils幫我們做了
    }
}

使用DbUtils執行查詢操作:

java基礎之JDBC九:DbUtils的簡介及使用