【JavaWeb】DbUtils入門之QueryRunner


DbUtils簡介

根據官網的介紹,DbUtils是一種 JDBC Utility Component (翻譯過來大概就是:JDBC實用部件),故名思意,和數據庫操作有關

官網上的簡介也稱之為 JDBC helper library ,由此可知,DbUtils是一個工具類庫,用來進行數據庫通信的

用法

官方原文:The core classes/interfaces in DbUtils are QueryRunner and ResultSetHandler(在 DbUtils 中的核心類/接口為 QueryRunnerResultSetHandler

所以,我們需要掌握這兩個類的使用,這篇文章先闡述第一個類

QueryRunner

QueryRunner中一共有6種方法:

  • execute(執行SQL語句)
  • batch(批量處理語句)
  • insert(執行INSERT語句)
  • insertBatch(批量處理INSERT語句)
  • query(SQL中 SELECT 語句)
  • update(SQL中 INSERT, UPDATE, 或 DELETE 語句)

我們主要介紹最后兩種(最常用):

源碼:
query方法
  1. T query(String sql, ResultSetHandler rsh)
    不需要替換參數來執行已給予的 SELECT語句

    1. T query(String sql, ResultSetHandler rsh, Object... params)
      需要一個或多個替換參數來執行已給予的 SELECT語句,並返回一種對象結果
update方法
  1. int update(Connection conn, String sql)
    不需要替換參數來執行INSERT, UPDATE
    DELETE
    語句

  2. int update(Connection conn, String sql, Object... params)
    需要一個或多個替換參數以及一個數據庫連接來執行INSERT, UPDATE
    DELETE
    語句

  3. int update(Connection conn, String sql, Object param)
    需要一個替換參數,以及一個數據庫連接來執行INSERT, UPDATE
    DELETE
    語句

  4. int update(String sql)
    不需要替換參數來執行已給予的INSERT, UPDATE
    DELETE
    語句

  5. int update(String sql, Object... params)
    需要一個或多個替換參數來執行INSERT, UPDATE
    DELETE
    語句(參數無需帶有連接)

  6. int update(String sql, Object param)
    不需要替換參數來執行INSERT, UPDATE
    DELETE
    語句(參數無需帶有連接)

Demo
1. 建表



2. 數據源

我們采用上次配置的c3p0-config.xml文件,只是將數據庫名稱改為test:

然后配置數據源:

    //獲取數據源
    private static ComboPooledDataSource dataSource = new ComboPooledDataSource();
    //QueryRunner需要一個數據源作為參數
    private static QueryRunner queryRunner = new QueryRunner(dataSource);

###### 3. 添加信息
    //添加紀錄
    private static void add(){
        String id, name, gender;
        for (int i = 0; i < 10; i++) {
            id = String.valueOf(i);
            name = "name" + String.valueOf(i);
            gender = i % 2 == 0 ? "male" : "female";

            try{
                String sql = "INSERT INTO test VALUES(?,?,?);";
                Object[] params = {id, name, gender};
                queryRunner.update(sql, params);
            }catch(SQLException e){
                throw new RuntimeException(e);
            }
        }
    }

執行完添加操作后,在MySQL Workbench中查詢的結果顯示,數據已添加:



4. 編輯信息以及刪除信息

編輯信息:

    //按照給定ID編輯信息
    private static void edit(String id){
        try{
            String sql = "UPDATE test SET  name = ?, gender = ? WHERE id = ?;";
            Object[] params = {"change", "female", id};
            queryRunner.update(sql,params);
        }catch (SQLException e){
            throw new RuntimeException(e);
        }
    }

    public static void main(String[] args){
        edit("0");
    }

編輯結果:




刪除信息:

    //按照給定ID刪除信息
    private static void delete(String id){
        try{
            String sql = "DELETE FROM test WHERE id = ?";
            queryRunner.update(sql, id);
        }catch (SQLException e){
            throw new RuntimeException(e);
        }
    }

    public static void main(String[] args){
        delete("0");
    }

刪除結果:

5. 查看所有信息

在使用 query 方法時,需要使用 ResultSetHandler, 具體使用方式將在另一篇文章中闡述

將查詢的結果,使用 ArrayListHandler,存入ArrayList,以數組形式打印:

    private static void showAll(){
        try{
            String sql = "SELECT * FROM test;";
            List<Object[]> list = queryRunner.query(sql, new ArrayListHandler());
            for (Object[] aList : list) {
                System.out.println(Arrays.toString(aList) + " ");
            }
        }catch (SQLException e){
            throw new RuntimeException(e);
        }
    }

關於QueryRunner對數據庫的CRUD操作就介紹到此了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM