QueryRunner--常見方法


數據庫鏈接池的使用,一方面解決了數據庫訪問過多時造成數據庫承受的壓力,另一方面也簡化了數據查詢,今天就

DBUtils包所提供的QueryRunner類(org.apache.commons.dbutils.QueryRunner)作出說明:

  • 簡化SQL查詢

  • 與ResultSetHandler協同工作將使編碼量大為減少。

  • 常見方法
  1.  query(String sql, Object[] params, ResultSetHandler rsh); query(String sql, Object params, ResultSetHandler rsh):方法本身不提供數據庫連接,執行選擇查詢,在查詢中,對象陣列的值被用來作為查詢的置換參數。

  2. update(String sql, Object params):update(String sql, Object params[]):執行插入、更新或刪除(DML)操作。
  3. query(String sql, ResultSetHandler rsh):執行無需參數的選擇查詢。

                     統一說明,Object[] params接受的是一個參數數組,Object params接收的是單個參數

  • 先看常見工具類的編寫:----------------這里就c3p0數據庫連接池查詢作出例子
public class JdbcUtils {

    private static DataSource ds;
    static{
        ds = new ComboPooledDataSource();
    }
    
    public static DataSource getDataSource(){
        return ds;
    }
    
}
  • 就兩個參數查詢作為參考:
  • 補充:
  1. 實體Users-------id--- username-----  password(三個封裝對象)
  2. 實體QueryResult-------list集合------totalrecord整型
  3. 目標====從數據庫中獲得所有的user信息,totalrecord是總記錄數記錄user的總數
//獲取到頁面數據和頁面大小
    public QueryResult pageQuery(int startindex,int pagesize){
        
        try {
        QueryRunner runner=new QueryRunner(JdbcUtils.getDataSource());
        QueryResult qr = new QueryResult();
        String sql="select * from pagination limit ?,?";
        Object params[]={startindex,pagesize};
        List list=    (List) runner.query(sql, params, new BeanListHandler(Users.class));
        qr.setList(list);
        sql = "select count(*) from pagination";  
        int totalrecord= 0;
        runner.update(sql, params)
        totalrecord= ((Long) runner.query(sql, new ScalarHandler())).intValue();
        qr.setTotalrecord(totalrecord);
        return qr;
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

代碼分析:

List list=    (List) runner.query(sql, params, new BeanListHandler(Users.class));
params是一個參數數組,里面是數據庫查詢需要的兩個參數
new BeanListHandler(Users.class)得到list集合 同時將數組封裝到users這個實體中,簡化操作油然而現
 totalrecord= ((Long) runner.query(sql, new ScalarHandler())).intValue();

這個是無需參數的查詢,得帶一個值,那就是數據庫總共多條記錄

關鍵:((Long) runner.query(sql, new ScalarHandler())).intValue()

          runner.query(sql, new ScalarHandler())得到的值並不能直接強轉為integer類型,但是接受端參數是整數類型,因此先將值轉為long,然后整體調用intValue()方法得到整型

 

 

ps:今晚就到這,后續繼續學習新的方法。

 


免責聲明!

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



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