QueryRunnerHandleDemo

2019-10-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);
         }

    }


}

上一篇下一篇

猜你喜欢

热点阅读