美文网首页
QueryRunnerHandleDemo

QueryRunnerHandleDemo

作者: 勇者与王者 | 来源:发表于2019-10-04 22:04 被阅读0次
    package Day30DBUtils;
    
    import Day29_JDBC.JDBC_Util.JDBCUtilConfig;
    import Day29_JDBC.JDBC_Util.JDBC_Domain.Sort;
    import org.apache.commons.dbutils.QueryRunner;
    import org.apache.commons.dbutils.handlers.*;
    
    import java.sql.Connection;
    import java.sql.SQLException;
    import java.util.List;
    import java.util.Map;
    
    /**
     * @Author quzheng
     * @Date 2019/10/4 13:39
     * @Version 1.0
     * 调用QueryRunner类方法 query(Connection con,String sql, ResultSetHandle r,Object...params)
     * ResultSetHandle r 结果集的处理方式,传递ResultSetHandle接口实现类
     *
     */
    public class QueryRunnerHandleDemo {
    
        private static Connection con = JDBCUtilConfig.getConnection();
    
        public static void main(String[] args) throws SQLException {
    
    //        arrayHandle();
    //        arrayListHandle();
    //        beanHandle();
    //        beanListHandle();
    //        columnListHandler();
    //        scalarHandler();
    //        mapHandler();
            mapListHandler();
        }
    
        /**
         * 结果集第八种 MapListHandler
         * 将结果集 每一行存储到 Map 集合 键:列名  值:数据
         * 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());
            for (Map<String,Object> map : list){
                for(String key: map.keySet()){
                    System.out.print(key+"..."+map.get(key));
                }
                System.out.println();
            }
        }
    
    
    
    
    
        /**
         * 结果集的第七种处理方法,MapHandler
         * 将结果集第一行数据,封装到Map集合中
         * Map<键,值> 键:列名  值:这列的数据
         */
        public static void mapHandler() throws SQLException {
            QueryRunner qr = new QueryRunner();
            String sql = "select * from sort";
    
            //调用方法query 传递结果集实现类 MapHandler
            Map<String,Object> map = qr.query(con,sql,new MapHandler());
            for (String key:map.keySet()){
                System.out.println(key+"..."+map.get(key));
            }
        }
    
    
    
    
        /**
         * 结果集第六个处理方法 ScalarHandler
         * 对于 查询后,只有一个结果
         */
        public static void scalarHandler() throws SQLException {
            QueryRunner qr = new QueryRunner();
            String sql = "select count(*) from sort";
    
            //调用方法query ,传递结果集处理实现类ScalarHandler
            long l = qr.query(con,sql,new ScalarHandler<Long>());
            System.out.println(l);
        }
    
    
        /**
         * 结果集第五种处理方法,ColumnListHandler
         * 将结果集 指定列的数据,存储到List集合中
         * List<Object> </Object> 因为列的数据类型不确定,所以只能用Object存储
         * 其中:ColumnListHandler参数中的列名,必须是在 sql查询的结果中,否则,报SQL异常
         */
        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 o : list){
                System.out.println(o);
            }
        }
    
    
    
    
    
        /**
         * 第四种处理方法:BeanListHandle
         * 将数据结果集的每一行数据都封装成JavaBean 对象
         * 多个JavaBean对象,封装到List集合中
         */
    
        public static void beanListHandle() throws SQLException {
            QueryRunner qr = new QueryRunner();
            String sql = " select * from sort";
    
            //调用方法,传递结果集的实现类BeanListHandler
            List<Sort> list = qr.query(con,sql,new BeanListHandler<Sort>(Sort.class));
            for(Sort s : list){
                System.out.println(s);
            }
        }
    
    
    
        /**
         *
         * @throws SQLException
         * 结果集第三者处理方法,BeanHandle
         * 将结果集的第一行数据,封装成JavaBean对象
         *
         * 其中 被封装到JavaBean的对象,Sort类必须有空参数的构造器
         * 因为BeanHandler的参数 类型反射 需要用到 空参数的构造方法
         */
        public static void beanHandle() throws SQLException {
            QueryRunner qr = new QueryRunner();
            String sql = " select * from sort";
    
            //
            Sort s = qr.query(con,sql,new BeanHandler<Sort>(Sort.class));
            System.out.println(s);
        }
    
    
    
        /**
         * 结果集第二种处理方法,ArrayListHandle
         * 将结果集的每一行封装到对象数组中
         */
        public static void arrayListHandle() throws SQLException {
            QueryRunner qr = new QueryRunner();
            String sql = " select * from sort";
    
            //调用query方法,结果集处理的参数上,传递实现类ArrayListHandle
            //方法返回值 每行是一个对象数组,存储到List
            List<Object []> result = qr.query(con,sql,new ArrayListHandler());
    //        System.out.println(result);
    
            for ( Object[] obj : result){
                for (Object o : obj){
                    System.out.print(o+"\t\t");
                }
                System.out.println();
            }
    
        }
    
    
        /**
         *
         * @throws SQLException
         * 结果集第一种处理方法 ArrayHandle
         * 将结果集的第一行存储到对象数组中 Object[]
         *
         */
        public static void arrayHandle() throws SQLException {
            QueryRunner qr = new QueryRunner();
            String sql = " select * from sort";
    
            //调用方法query执行查询,传递连接对象,SQL语句,结果集处理方式的实现类
            //返回对象数组
             Object [] result = qr.query(con, sql,new ArrayHandler());
             for(Object o : result){
                 System.out.println(o);
             }
    
        }
    
    
    }
    
    

    相关文章

      网友评论

          本文标题:QueryRunnerHandleDemo

          本文链接:https://www.haomeiwen.com/subject/jzespctx.html