JDBC连接池和DBUtils(5)

/*
    * 第五种查询方式:使用ColumnListHandler
    * ColumnListHandler会把结果集中指定列的数据封装到一个List集合中
    * 如果不指定列,则默认使用第一列数据存储到List集合中
    * ColumnListHandler()
    * ColumnListHandler(int columnIndex) 列号1,2,3,4
    * ColumnListHandler(String columnName) 列名
    */
    @Test
    public void columnListHandler(){
        try {
            //拼接查询sql语句
            String sql = "SELECT * FROM category";
            //调用QueryRunner中的query方法执行查询sql语句,结果集传入ColumnListHandler
            //返回一个List集合,因为列的数据类型不同,所有元素使用Object类型
            List<Object> list = qr.query(sql, new ColumnListHandler("cname"));
            for (Object object : list) {
                System.out.println(object);
            }
        } catch (Exception e) {
            System.out.println(e);
        }
    }
   
    /*
    * 第四种查询方式:使用BeanListHandler(重点)
    * BeanListHandler会把多个条数据封装到多个JavaBean对象中
    * 多个JavaBean对象存储到List集合中
    *
    * 注意:
    *      JavaBean中必须有空参数构造方法
    */
    @Test
    public void beanListHandler(){
        try {
            //拼接查询sql语句
            String sql = "SELECT * FROM category";
            //调用QueryRunner中的query方法执行查询sql语句,结果集传入BeanListHandler
            List<Category> list = qr.query(sql, new BeanListHandler<>(Category.class));
            //遍历存储Category的list集合
            for (Category category : list) {
                System.out.println(category);
            }
        } catch (Exception e) {
            System.out.println(e);
        }
    }
   
    /*
    * 第三种查询方式:使用BeanHandler(重点)
    * BeanHandler会把结果集的第一条数据,封装到指定的JavaBean对象中
    * 构造方法:
    *    BeanHandler(Class<T> type) 传递JavaBean对象的class文件对象
    *        BeanHandler内部会根据传递的class文件对象使用反射技术创建JavaBean对象,把查询的结果集中第一行数据存储到JavaBean中
    *    相当于
    *        Category c = new Category();
    *        c.setXXX(xxx);
    *        c.setXXX(xxx);
    *        c.setXXX(xxx);
    *  注意:
    *      JavaBean中必须有空参数构造方法
    */
    @Test
    public void beanHandler(){
        try {
            //拼接查询sql语句
            String sql = "SELECT * FROM category";
            //调用QueryRunner中的query方法执行查询sql语句,结果集传入BeanHandler
            Category cate = qr.query(sql, new BeanHandler<>(Category.class));
            System.out.println(cate);
        } catch (Exception e) {
            System.out.println(e);
        }
    }
   
    /*
    * 第二种查询方式:使用ArrayListHandler
    * ArrayListHandler中会把多条结果封装到多个对象数组中
    * 一个对象数组封装一行数据
    * 多个对象数组需要存储到list集合中
    */
    @Test
    public void arrrayListHandler(){
        try {
            //拼接查询sql语句
            String sql = "SELECT * FROM category where cid = ?";
            sql = "SELECT * FROM category where cid in(?,?)";
            //调用QueryRunner中的query方法执行查询sql语句,传入ArrayListHandler结果集
            List<Object[]> list = qr.query(sql, new ArrayListHandler(), 1,3);
            //遍历集合
            for (Object[] objects : list) {
                //遍历对象数组
                for (Object obj : objects) {
                    System.out.print(obj+" ");
                }
                System.out.println();//换行
            }
        } catch (Exception e) {
            System.out.println(e);
        }
    }
   
    /*
    * 第一种查询方式:使用ArrayHandler
    * ArrayHandler会把结果集第一条数据封装到一个对象(Object)数组中
    * 数组中的每一个元素,就是第一条数据数据的每一列的值
    */
    @Test
    public void arrayHandler(){
        try {
            //拼接查询sql语句
            String sql = "SELECT * FROM category";
            //调用QueryRunner中的query方法执行查询sql语句,传入ArrayHandler结果集
            Object[] objs = qr.query(sql, new ArrayHandler());
            //遍历数组
            for (Object obj : objs) {
                System.out.print(obj+" ");
            }
        } catch (Exception e) {
            System.out.println(e);
        }
    }
}

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/01bdd1d8f1daf69cafde75184d971a2c.html