zoukankan      html  css  js  c++  java
  • 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:今晚就到这,后续继续学习新的方法。

  • 相关阅读:
    2017ccpc全国邀请赛(湖南湘潭) E. Partial Sum
    Codeforces Round #412 C. Success Rate (rated, Div. 2, base on VK Cup 2017 Round 3)
    2017 中国大学生程序设计竞赛 女生专场 Building Shops (hdu6024)
    51nod 1084 矩阵取数问题 V2
    Power收集
    红色的幻想乡
    Koishi Loves Segments
    Wood Processing
    整数对
    Room and Moor
  • 原文地址:https://www.cnblogs.com/wangsr-suc/p/8904282.html
Copyright © 2011-2022 走看看