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:今晚就到这,后续继续学习新的方法。

  • 相关阅读:
    列出九宫格输入组合
    判断是否平衡二叉树
    Jetson tx2的tensorflow keras环境搭建
    TypeError: Only valid with DatetimeIndex, TimedeltaIndex or PeriodIndex, but got an instance of 'Index'
    python时间序列画图plot总结
    pandas 读csv文件 TypeError: Empty 'DataFrame': no numeric data to plot
    yolov3实践(二)
    yolov3实践(一)
    USB摄像头无法正常读取问题
    tensorflow神经网络拟合非线性函数与操作指南
  • 原文地址:https://www.cnblogs.com/wangsr-suc/p/8904282.html
Copyright © 2011-2022 走看看