黑马程序员技术交流社区

标题: DBUtils工具类结果集处理的方式 [打印本页]

作者: Jochen    时间: 2017-12-4 14:42
标题: DBUtils工具类结果集处理的方式
下面谈谈最近我们学习到数据库中的一部分内容:
       *a: QueryRunner实现查询操作
            query(Connection conn, String sql, ResultSetHandler<T> rsh, Object... params) ,用来完成表数据的查询操作
               调用QueryRunner类方法query(Connection con,String sql,ResultSetHandler r, Object..params)
                ResultSetHandler r 结果集的处理方式,传递ResultSetHandler接口实现类
                Object..params SQL语句中的?占位符
                注意: query方法返回值,返回的是T 泛型, 具体返回值类型,跟随结果集处理方式变化
          * b: ResultSetHandler结果集处理类
      (1).*ArrayHandler            将结果集中的第一条记录封装到一个Object[]数组中,数组中的每一个元素就是这条记录中的每一个字段的值
           案例:(就写出核心代码部分)public static void arrayHandler()throws SQLException{
                                        QueryRunner qr = new QueryRunner();
                                        String sql = "SELECT * FROM sort";
                                        //调用方法query执行查询,传递连接对象,SQL语句,结果集处理方式的实现类
                                        //返回对象数组
                                        Object[] result = qr.query(con, sql, new ArrayHandler());
                                        for(Object obj : result){
                                                System.out.print(obj);
                                        }
                                }
                  (2) ArrayListHandler        将结果集中的每一条记录都封装到一个Object[]数组中,将这些数组在封装到List集合中。
                   案例:public static void arrayListHandler()throws SQLException{
                                        QueryRunner qr = new QueryRunner();
                                        String sql = "SELECT * FROM sort";               
                                        //调用query方法,结果集处理的参数上,传递实现类ArrayListHandler
                                        //方法返回值 每行是一个对象数组,存储到List
                                        List<Object[]> result=  qr.query(con, sql, new ArrayListHandler());
                                       
                                        //集合的遍历
                                        for( Object[] objs  : result){
                                                //遍历对象数组
                                                for(Object obj : objs){
                                                        System.out.print(obj+"  ");
                                                }
                                                System.out.println();
                                        }
                                }
                  (3).  BeanHandler            将结果集中第一条记录封装到一个指定的javaBean中。
                          案例:public static void beanHandler()throws SQLException{
                                        QueryRunner qr = new QueryRunner();
                                        String sql = "SELECT * FROM sort ";
                                        //调用方法,传递结果集实现类BeanHandler
                                        //BeanHandler(Class<T> type)
                                        Sort s = qr.query(con, sql, new BeanHandler<Sort>(Sort.class));
                                        System.out.println(s);
                                }
                  (4).【必须掌握】* BeanListHandler        将结果集中每一条记录封装到指定的javaBean中,将这些javaBean在封装到List集合中
                       案例:public static void beanListHander()throws SQLException{
                                QueryRunner qr = new QueryRunner();
                                String sql = "SELECT * FROM sort ";
                                //调用方法query,传递结果集处理实现类BeanListHandler
                                List<Sort> list = qr.query(con, sql, new BeanListHandler<Sort>(Sort.class));
                                for(Sort s : list){
                                        System.out.println(s);
                                }
                        }
                   (5).【必须掌握】* ColumnListHandler        将结果集中指定的列的字段值,封装到一个List集合中。
                       案例:public static void columnListHandler()throws SQLException{
                                        QueryRunner qr = new QueryRunner();
                                        String sql = "SELECT * FROM sort ";               
                                        //调用方法 query,传递结果集实现类ColumnListHandler
                                        //实现类构造方法中,使用字符串的列名
                                        List<Object> list = qr.query(con, sql, new ColumnListHandler<Object>("sname"));
                                        for(Object obj : list){
                                                System.out.println(obj);
                                        }
                   (6).【必须掌握】* ScalarHandler            它是用于单数据。例如select count(*) from 表操作。
                    案例:public static void scalarHandler()throws SQLException{
                                        QueryRunner qr = new QueryRunner();
                                        String sql = "SELECT COUNT(*) FROM sort";
                                        //调用方法query,传递结果集处理实现类ScalarHandler
                                        long count = qr.query(con, sql, new ScalarHandler<Long>());
                                        System.out.println(count);
                                }
                    (7).  MapHandler            将结果集第一行封装到Map集合中,Key 列名, Value 该列数据
                     案例:public static void mapHandler()throws SQLException{
                                        QueryRunner qr = new QueryRunner();
                                        String sql = "SELECT  * FROM sort";
                                        //调用方法query,传递结果集实现类MapHandler
                                        //返回值: Map集合,Map接口实现类, 泛型
                                        Map<String,Object> map = qr.query(con, sql, new MapHandler());
                                        //遍历Map集合
                                        for(String key : map.keySet()){
                                                System.out.println(key+".."+map.get(key));
                                        }
                                }
                    (8 ). MapListHandler        将结果集每一行封装到Map集合中,Key 列名, Value 该列数据,Map集合存储到List集合
                        案例:public static void mapListHandler()throws SQLException{
                                        QueryRunner qr = new QueryRunner();
                                        String sql = "SELECT  * FROM sort";
                                        //调用方法query,传递结果集实现类MapListHandler
                                        //返回值List集合, 存储的是Map集合
                                        List<Map<String,Object>> list = qr.query(con, sql, new MapListHandler());
                                        //遍历集合list
                                        for( Map<String,Object> map : list ){
                                                for(String key : map.keySet()){
                                                        System.out.print(key+"..."+map.get(key));
                                                }
                                                System.out.println();
                                        }
                                       
                                }

作者: chenyanchenyan    时间: 2017-12-4 16:26
黑马大神到此一游
作者: 奥斯托洛夫斯基    时间: 2017-12-4 17:53

作者: 我是一匹小黑马Y    时间: 2017-12-8 17:03
你这么厉害?




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2