DbUtils組件(核心類QueryRunner)學習總結

一.什么是DbUtils組件

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

下載組件,引入jar文件:commons-dbutils-1.6.jar 密碼:tygh
maven環境配置:

 <dependency>
      <groupId>commons-dbutils</groupId>
      <artifactId>commons-dbutils</artifactId>
      <version>1.6</version>
    </dependency>

二.核心類QueryRunner

帶有Connection的

Int update(Connection conn, String sql, Object param);執行更新帶一個占位符的sql
Int update(Connection conn, String sql, Object… param);執行更新帶多個占位符的sql
Int[] batch(Connection conn, String sql, Object[][] params) 批處理
T query(Connection conn ,String sql, ResultSetHandler<T> rsh, Object... params) 查詢方法

不帶有Connection的

Int update( String sql, Object param); 執行更新帶一個占位符的sql
Int update( String sql, Object… param);執行更新帶多個占位符的sql
Int[] batch( String sql, Object[][] params); 批處理

注意: 如果調用DbUtils組件的操作數據庫方法,沒有傳入連接對象,那么在實例化QueryRunner對象的時候需要傳入數據源對象: QueryRunner qr = new QueryRunner(DataSource ds);

1.更新操作(包括delete 、insert、 update)

例1:
 @Test
    public void delete() throws Exception {
        String sql = " delete from car where id =? ";
        conn = ConnUtil.getConnextion();
        // 創建DbUtils核心工具類對象
        QueryRunner qr = new QueryRunner();
        qr.update(conn, sql, 3);
        DbUtils.close(conn);
    }

結果測試


例2:
 public void save(CarBean carBean)throws Exception {
        String sql = "INSERT INTO car (carname,carEntity) VALUES(?,?); " ;
        conn = ConnUtil.getConnextion();
        QueryRunner qr = new QueryRunner();
        // 批量插入
        qr.batch(conn, sql, new Object[][]{ {"寶馬","2017"},{"奔馳","2017"}  });
        // 關閉
        conn.close();
    }
image.png

2.查詢操作

DbUtils提供的封裝結果的一些對象:

1)BeanHandler: 查詢返回單個對象
2) BeanListHandler: 查詢返回list集合,集合元素是指定的對象

  1. ArrayHandler, 查詢返回結果記錄的第一行,封裝對對象數組, 即返回:Object[]
    1. ArrayListHandler, 把查詢的每一行都封裝為對象數組,再添加到list集合中
    2. ScalarHandler 查詢返回結果記錄的第一行的第一列 (在聚合函數統計的時候用)
    3. MapHandler 查詢返回結果的第一條記錄封裝為map
  2. MapListHandler 查詢返回結果封裝為List<map>
  • a.自定義結果集封裝數據

@Test
    public void carFind() throws Exception {
        String sql = " select * from car where id = ? ";
        conn = ConnUtil.getConnextion();
        QueryRunner qr = new QueryRunner();
        //查詢
        CarBean carBean= qr.query(conn, sql, new ResultSetHandler<CarBean>() {
            //自定義 如何封裝一個CarBean對象
            public CarBean handle(ResultSet resultSet) throws SQLException {
                if(resultSet.next()) {
                    CarBean carBean = new CarBean();
                    carBean.setId(resultSet.getInt("id"));
                    carBean.setCarname(resultSet.getString("carname"));
                    carBean.setCarname(resultSet.getString("carEntity"));
                    return carBean;
                }
                return null;
            }
        },1);
        System.out.println(carBean.getId()+""+carBean.getCarname()+""+carBean.getCarEntity());

    }
  • b.查詢使用組件提供的BeanHandler結果集對象封裝數據

@Test
    public void carFind() throws Exception {
        String sql = " select * from car where id = ? ";
        conn = ConnUtil.getConnextion();
        QueryRunner qr = new QueryRunner();
        //查詢
     CarBean carBean = qr.query(conn,sql,new BeanHandler<CarBean>(CarBean.class),2);

      System.out.println(carBean.getId()+" "+carBean.getCarname()+" "+carBean.getCarEntity());
      conn.close();

    }
  • c.查詢使用組件提供的BeanListHandler結果集對象封裝數據

@Test
    public void carFind() throws Exception {
        String sql = " select * from car where id = ? ";
        conn = ConnUtil.getConnextion();
        QueryRunner qr = new QueryRunner();
        //查詢
     List <CarBean> carBean = qr.query(conn,sql,new BeanListHandler<CarBean>(CarBean.class),4);

      System.out.println(carBean.get(0).getId()+" "+carBean.get(0).getCarname()+" "+carBean.get(0).getCarEntity());
      conn.close();

    }
  • d.查詢使用組件提供的MapHandler 結果集對象封裝數據

@Test
    public void carFind() throws Exception {
        String sql = " select * from car";
        conn = ConnUtil.getConnextion();
        QueryRunner qr = new QueryRunner();
        //查詢
     Map<String,Object> carBean = qr.query(conn,sql,new MapHandler());

      System.out.println(carBean);
      conn.close();

    }

image.png
  • e.查詢使用組件提供的ScalarHandler 結果集對象封裝數據(在聚合函數統計時候用)

@Test
    public void carFind() throws Exception {
        String sql = " select count(*) from car";
        conn = ConnUtil.getConnextion();
        QueryRunner qr = new QueryRunner();
        //查詢
     Long carBean = qr.query(conn,sql,new ScalarHandler<Long>());

      System.out.println(carBean);
      conn.close();

    }

文章文集:JavaEE--學習筆記

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,765評論 18 399
  • 本文包括:1、DBUtils簡介2、DbUtils類3、QueryRunner類4、ResultSetHandle...
    廖少少閱讀 20,854評論 1 24
  • JDBC概述 在Java中,數據庫存取技術可分為如下幾類:JDBC直接訪問數據庫、JDO技術、第三方O/R工具,如...
    usopp閱讀 3,557評論 3 75
  • JDBC框架——DBUtils 本文包括: 1、DBUtils簡介 2、DbUtils類 3、QueryRunne...
    加油小杜閱讀 915評論 0 1
  • 經過一個多小時,坤仔終于到了他與凌潔兩人的小屋,品嘗了凌潔為他做的兩道小菜,小菜中滿是幸福的味道。 吃完飯、刷完碗...
    斷指鶴閱讀 457評論 1 0