java基礎之JDBC九:DbUtils的簡介及使用
阿新 • • 發佈:2018-06-14
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的簡介及使用