DBUtils是JDBC的簡化開發工具包。需要導入commons-dbutils-1.6.jar才能夠正常使用DBUtils工具。 1、DBUtils功能簡介 1.QueryRunner中提供對SQL語句操作的API 2.ResultSetHandler介面,用於定義select操作後,怎樣封裝結果 ...
DBUtils是JDBC的簡化開發工具包。需要導入commons-dbutils-1.6.jar才能夠正常使用DBUtils工具。 1、DBUtils功能簡介 1.QueryRunner中提供對SQL語句操作的API 2.ResultSetHandler介面,用於定義select操作後,怎樣封裝結果集 3.DBUtils類,它是一個工具類,定義了關閉資源與事務處理的方法 2、QueryRunner核心類 1.update(Connection conn ,String sql, Object ... params), 用來完成表數據的增加、刪除、更新操作。 2.query(Connection conn ,String sql ,ResultSetHandler<T>rsh, Object...params), 用來完成表數據的查詢操作. 3、QueryRunner實現添加、更新、刪除操作 3.1 添加
1 public void insert(){ 2 try{ 3 //獲取一個用來執行SQL語句的對象 QueryRunner 4 QueryRunner qr = new QueryRunner(); 5 String sql = "insert into student(sno,sname,ssex) values (?,?,?)"; 6 Object[] params = {"1","張三","男"}; 7 Connection conn = JDBCUtils.getConnection(); 8 int line = gr.update(conn,sql,params);//用來完成表數據的增加、刪除、更新操作 9 //結果處理集 10 System.out.println("line="+line); 11 }catch(SQLException e){ 12 throw new RuntimeException(e); 13 } 14 }3.2 更新
1 public void update(){ 2 try { 3 //創建一個QueryRunner對象,用來完成SQL語句的執行 4 QueryRunner qr = new QueryRunner(); 5 //執行SQL語句 6 String sql = "UPDATE student SET sname = '李四' WHERE sno=?"; 7 Object[] params = {"1"}; 8 Connection conn = JDBCUtils.getConnection(); 9 int line = qr.update(conn, sql, params); 10 //結果集的處理 11 System.out.println("line="+line); 12 } catch (SQLException e) { 13 throw new RuntimeException(e); 14 } 15 }3.3 刪除
1 public void delete(){ 2 try { 3 //創建一個QueryRunner對象,用來完成SQL語句的執行 4 QueryRunner qr = new QueryRunner(); 5 //執行SQL語句 6 String sql = "DELETE FROM student WHERE name = ?"; 7 Object[] params = {"張三"}; 8 Connection conn = JDBCUtils.getConnection(); 9 int line = qr.update(conn, sql, params); 10 //結果集的處理 11 System.out.println("line="+line); 12 } catch (SQLException e) { 13 throw new RuntimeException(e); 14 } 15 }4、QueryRunner實現查詢操作 · query(Connection conn,String sql,ResultSetHandler<T> rsh,Object... params), 用來完成表數據的查詢操作。 4.1 ResultSetHandler結果集處理類
ArrayHandler |
將結果集中的第一條記錄封裝到一個Object[]數組中,數組中的每一個元素就是這條記錄中的每一個欄位的值 |
ArrayListHandler |
將結果集中的每一條記錄都封裝到一個Object[]數組中,將這些數組在封裝到List集合中。 |
BeanHandler |
將結果集中第一條記錄封裝到一個指定的javaBean中。 |
BeanListHandler |
將結果集中每一條記錄封裝到指定的javaBean中,將這些javaBean在封裝到List集合中 |
ColumnListHandler |
將結果集中指定的列的欄位值,封裝到一個List集合中 |
ScalarHandler |
它是用於單數據。例如select count(*) from 表操作。 |
MapHandler |
將結果集第一行封裝到Map集合中,Key 列名, Value 該列數據 |
MapListHandler |
將結果集第一行封裝到Map集合中,Key 列名, Value 該列數據,Map集合存儲到List集合 |
1 //採用ArrayHandler處理結果集 2 public static void ArrayHandler()throws SQLException{ 3 QueryRunner qr = new QueryRunner(); 4 String sql = "select* from book "; 5 Object[] objects= qr.query(con,sql, new ArrayHandler()); 6 for (Object object : objects) { 7 System.out.print(object+"\t"); 8 } 9 }
ArrayListHandler:將結果集中的每一條記錄都封裝到一個Object[]數組中,將這些數組在封裝到List集合中
1 //採用ArrayListHandler處理結果 2 public static void ArrayListHandler()throws SQLException{ 3 QueryRunner qr = new QueryRunner(); 4 String sql = "select* from book "; 5 List<Object[]> objects= qr.query(con,sql, new ArrayListHandler()); 6 for (Object[] object : objects) { 7 for (Object o : object) { 8 System.out.print(o+"\t"); 9 } 10 System.out.println("\n"); 11 } 12 }
4.3 BeanHandler與BeanListHandler查詢
BeanHandler :將結果集中第一條記錄封裝到一個指定的javaBean中。
1 //採用BeanHandler處理結果集 2 public static void BeanHandler()throws SQLException{ 3 QueryRunner qr = new QueryRunner(); 4 String sql = "select * from book"; 5 Sort s = qr.query(con,sql,new BeanHandler<Sort>(Sort.class)); 6 System.out.println(s); 7 }
BeanListHandler :將結果集中每一條記錄封裝到指定的javaBean中,將這些javaBean在封裝到List集合中
1 //採用BeanListHandler處理結果集 2 public static void BeanListHandler()throws SQLException{ 3 QueryRunner qr = new QueryRunner(); 4 String sql = "select * from book"; 5 List<Sort> list= qr.query(con,sql,new BeanListHandler<Sort>(Sort.class)); 6 for (Sort sort : list) { 7 System.out.println(sort); 8 } 9 }
4.4 ColumnListHandler與ScalarHandler查詢
ColumnListHandler:將結果集中指定的列的欄位值,封裝到一個List集合中
1 //採用ColumnListHandler處理結果集 2 public static void ColumnListHandler()throws SQLException{ 3 QueryRunner qr = new QueryRunner(); 4 String sql = "select * from book where price=?"; 5 Object[] obj ={"89"}; //指定列 6 List<String> s= qr.query(con,sql,new ColumnListHandler<String>(),obj); 7 for (String s1 : s) { 8 System.out.println(s1); 9 } 10 }
ScalarHandler:它是用於單數據。例如select count(*) from 表操作。
1 //採用ScalarHandler處理結果集 2 public static void ScalarHandler()throws SQLException{ 3 QueryRunner qr = new QueryRunner(); 4 String sql = "select count(*) from book "; 5 long s = qr.query(con,sql,new ScalarHandler<Long>()); 6 System.out.println(s); 7 }
4.5 MapHandler和MapListHandler查詢
MapHandler:將結果集第一行封裝到Map集合中,Key 列名, Value 該列數據
//採用MapHandler處理結果集 public static void MapHandler()throws SQLException{ QueryRunner qr = new QueryRunner(); String sql = "select * from book"; Map<String,Object> map = qr.query(con,sql,new MapHandler()); for (String key : map.keySet()) { System.out.println(key+"...."+map.get(key)); } }
MapListHandler:將結果集第一行封裝到Map集合中,Key 列名, Value 該列數據,Map集合存儲到List集合
//採用MapListHandler處理結果集 public static void MapListHandler()throws SQLException{ QueryRunner qr = new QueryRunner(); String sql = "select * from book"; List<Map<String,Object>> list = qr.query(con,sql,new MapListHandler()); for (Map<String, Object> map : list) { for (String s : map.keySet()) { System.out.print(s+".."+map.get(s)+"\t"); } System.out.println(); } }