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()方法得到整型

 

http://www.kvvz4431.cn
http://www.uuza3384.cn
http://www.yyvw5376.cn
http://www.keej8837.cn
http://www.izpt4079.cn
http://www.pawt8491.cn
http://www.tagg4453.cn
http://www.zunr6962.cn
http://www.bbbv0837.cn
http://www.cigo1908.cn
http://www.ghkd7086.cn
http://www.dynl6229.cn
http://www.qvaa7038.cn
http://www.klkz4599.cn
http://www.gjsx9410.cn
http://www.chnp3876.cn
http://www.evkj6051.cn
http://www.evsv0341.cn
http://www.hvox0584.cn
http://www.bxam8036.cn
http://www.wkve4477.cn
http://www.vxyc7060.cn
http://www.gdud1657.cn
http://www.efsu8541.cn
http://www.zuho4758.cn
http://www.syjo7453.cn
http://www.jtzx1117.cn
http://www.uaoq1674.cn
http://www.wdab6663.cn
http://www.zesc9096.cn
http://www.cswx7205.cn
http://www.rfk7436.cn
http://www.rhy8758.cn
http://www.zpr4789.cn
http://www.sii9170.cn
http://www.auk5021.cn
http://www.imd3928.cn
http://www.pjp8645.cn
http://www.gtt0467.cn
http://www.ogs0753.cn
http://www.hry3962.cn
http://www.xut2146.cn
http://www.rxq4617.cn
http://www.yys0858.cn
http://www.vsq0054.cn
http://www.bqu7903.cn
http://www.mcx5948.cn
http://www.rvt9489.cn
http://www.gab2613.cn
http://www.vuv2033.cn
http://www.qpz8499.cn
http://www.fme4008.cn
http://www.wfg7038.cn
http://www.edt2696.cn
http://www.gxq9182.cn
http://www.wbd0565.cn
http://www.evl5793.cn
http://www.tuq2170.cn

猜你喜欢

转载自blog.csdn.net/shunfa888/article/details/80035558