是Apache旗下的產品。是對jdbc的簡單封裝。提供出通用的jdbc操作方法。簡化開發者使用jdbc的成本。
常用的API說明|-QueryRunner類:主要進行jdbc的增刪改查操作。
|-update():用于更新
|-query():用于查詢
|-ResultSetHandler接口:主要用于在查詢操作中,封裝結果集。ResultSet->對象
|-ArrayHandler類:把結果集的第一行記錄封裝成數組
|-ArrayListHandler類:把結果集的每一行封裝到對象數組中,每個對象數組放入List集合中。
|-BeanHandler類:把結果集封裝到一個javabean對象中
|-BeanListHandler類:把結果集的每一行數據封裝到一個javabean對象中,然后把javabean對象放入List集合中。
以上兩個方法使用頻率最高!!!
|-ScalarHandler類: 把結果集的第一行第一列的數據返回。通用用于聚合查詢(例如,count,max,min,avg)
介紹完它的核心API,下面來演示一下它的使用步驟。
DBUtils的使用步驟步驟一:導包
導入commons-dbutils-1.2.jar包
步驟二:代碼中使用它
利用DBUtils進行增刪改工作 @Test public void test1() { //1.創建QueryRunner //方式一:用一個DataSoutce對象作參數 ComboPooledDataSource pool = new ComboPooledDataSource(); QueryRunner qr = new QueryRunner(pool); try { //執行SQL語句 qr.update("insert into students(id,name) values(?,?)",new Object[] {8,"JAX"}); } catch (SQLException e) { e.PRintStackTrace(); throw new RuntimeException(e); } }下面來看看方式二:
@Test public void test2() { //1.創建QueryRunner //方式二:用無參的方法 ComboPooledDataSource pool = new ComboPooledDataSource(); QueryRunner qr = new QueryRunner(); Connection conn = null; try { conn = pool.getConnection(); //用指定的conn執行指定的SQL語句 qr.update(conn,"insert into students(id,name) values(85,'JinX')"); } catch (SQLException e) { e.printStackTrace(); throw new RuntimeException(e); }finally{ if(conn!=null) { try { conn.close();//放回連接池 } catch (SQLException e) { e.printStackTrace(); } } } }利用DBUtils進行查詢工作DBUtils最大的用處還是在于查詢后把結果封裝~下面來體現一下把
1.ArrayHandler:把查詢結果的第一行返回一個對象數組。 @Test public void test3() { //1.創建QueryRunner ComboPooledDataSource pool = new ComboPooledDataSource(); QueryRunner qr = new QueryRunner(pool); try { //執行SQL語句,使用ArrayHandler Object[] obj = (Object[]) qr.query("select * from students",new ArrayHandler()); for(int i = 0; i<obj.length;i++) { System.out.println(obj[i]); } } catch (SQLException e) { e.printStackTrace(); throw new RuntimeException(e); } }2.ArrayListHandler:把查詢的結果的每一行封裝到一個數組中,然后把這些數組放到一個集合中返回。@Test public void test4() { //1.創建QueryRunner ComboPooledDataSource pool = new ComboPooledDataSource(); QueryRunner qr = new QueryRunner(pool); try { //執行SQL語句,使用ArrayListHandler() List<Object[]> list = (List<Object[]>)qr.query("select * from students", new ArrayListHandler()); for(Object[] obj : list) { for(int i=0;i<obj.length;i++) { System.out.println(obj[i] + "/t"); } } } catch (SQLException e) { e.printStackTrace(); throw new RuntimeException(e); } }3.BeanHandler:把結果集的第一行記錄返回一個javaBean對象前提:結果集的字段名和javaBean的屬性名保持一致。
@Test public void test5() { //1.創建QueryRunner ComboPooledDataSource pool = new ComboPooledDataSource(); QueryRunner qr = new QueryRunner(pool); try { //執行SQL語句,使用BeanHandler Students s = (Students) qr.query("select * from students",new BeanHandler(Students.class)); System.out.println(s); } catch (SQLException e) { e.printStackTrace(); throw new RuntimeException(e); } }4.BeanListHandler:把結果集的每一行封裝成一個javaBean對象,然后把這些對象放入到一個List集合中返回。前提:結果集的字段名和javaBean的屬性名保持一致。
@Test public void test6() { //1.創建QueryRunner ComboPooledDataSource pool = new ComboPooledDataSource(); QueryRunner qr = new QueryRunner(pool); try { //執行SQL語句,使用BeanListHandler List<Students> list = (List<Students>)qr.query("select * from students",new BeanListHandler(Students.class)); for(Students s : list) { System.out.println(s); } } catch (SQLException e) { e.printStackTrace(); throw new RuntimeException(e); } }5.scalarHandler:返回結果集第一行第一列的字段值。常常被用于聚合查詢。
@Test public void test7() { //1.創建QueryRunner ComboPooledDataSource pool = new ComboPooledDataSource(); QueryRunner qr = new QueryRunner(pool); try { //執行SQL語句,使用ArrayHandler Object obj = (Object) qr.query("select count(*) from students",new ScalarHandler()); System.out.println(obj); } catch (SQLException e) { e.printStackTrace(); throw new RuntimeException(e); } }6.自定義字段名轉換handler如果字段名和javaBean屬性名,不一致,我們就要編寫自己的一個handler,來實現封裝時的字段名對應,下面就來演示一下如何編寫自己的handler
@Test public void test8() { //1.創建QueryRunner ComboPooledDataSource pool = new ComboPooledDataSource(); QueryRunner qr = new QueryRunner(pool); try { //執行SQL語句,使用BeanHandler Students2 s = (Students2) qr.query("select * from students",new MyStudentsHandler()); System.out.println(s); } catch (SQLException e) { e.printStackTrace(); throw new RuntimeException(e); } } //手動封裝結果集 class MyStudentsHandler implements ResultSetHandler { @Override public Object handle(ResultSet rs) throws SQLException { while(rs.next()) { //創建javaBean對象 Students2 s = new Students2(); s.setId(rs.getInt("sid"));// s.setName(rs.getString("sname")); return s; } return null; } }上述就是DBUtils這個工具的一些用法,主要是用來封裝結果集的對象~
新聞熱點
疑難解答