DBUtils的使用02

ResultSetHandler接口的实现类

@Test
public void test() {
    //1.ArrayHandler
    //适合取1条记录,把该条记录的每列值封装到一个数组中Object[]
    QueryRunner qr = new QueryRunner(DBC3P0Utils.getDataSource());
    String sql = "SELECT * FROM account WHERE id = ?";
    try {
        Object[] objs = qr.query(sql, new ArrayHandler(), 2);
        for (Object obj : objs) {
            System.out.println(obj.getClass() + "=" + obj);
        }
        //结果:
        //class java.lang.Integer=2
        //class java.lang.String=2
        //class java.lang.Double=9.88
    } catch (SQLException e) {
        e.printStackTrace();
    }
}

@Test
public void test2() {
    //ArrayListHandler
    //适合取多条记录,把每条记录的每列值封装到一个数组中Object[],把数组封装到一个List中
    QueryRunner qr = new QueryRunner(DBC3P0Utils.getDataSource());
    String sql = "SELECT * FROM account";
    try {
        List<Object[]> alist = qr.query(sql, new ArrayListHandler());
        //每一行数据
        for (Object[] objects : alist) {
            for (Object object : objects) {
                System.out.println(object);
            }
        }
    } catch (SQLException e) {
        e.printStackTrace();
    }
}

@Test
public void test3() {
    //ColumnListHandler
    //获取某一列的数据,封装到List中
    QueryRunner qr = new QueryRunner(DBC3P0Utils.getDataSource());
    String sql = "SELECT * FROM account";
    try {
        List<Object> list = qr.query(sql, new ColumnListHandler("name"));
        for (Object o : list) {
            //List<Object> list = qr.query(sql, new ColumnListHandler(1));
            //System.out.println(o);//id
            System.out.println(o);//name
        }
    } catch (SQLException e) {
        e.printStackTrace();
    }
}

@Test
public void test4() {
    //KeyedHandler
    //取多条记录,每一条记录封装到一个Map中,再把这个Map封装到另外一个Map中,key为指定的字段值
    //默认第一个为KEY
    QueryRunner qr = new QueryRunner(DBC3P0Utils.getDataSource());
    String sql = "SELECT * FROM account";
    try {
        Map<Object, Map<String, Object>> data = qr.query(sql, new KeyedHandler());
        //可以指定列作为key
        //Map<Object, Map<String, Object>> data = qr.query(sql, new KeyedHandler("name"));
        for (Entry<Object, Map<String, Object>> entry : data.entrySet()) {
            //获取key
            //默认为第一列
            System.out.println(entry.getKey());
            //获取value
            for (Entry<String, Object> rowData : entry.getValue().entrySet()) {
                System.out.println(rowData.getKey() + ":" + rowData.getValue());
            }
        }
    } catch (SQLException e) {
        e.printStackTrace();
    }
}

@Test
public void test5() {
    //MapHandler
    //适合取1条记录,把当前记录的列名和列值放到一个Map中
    QueryRunner qr = new QueryRunner(DBC3P0Utils.getDataSource());
    String sql = "SELECT * FROM account WHERE id = ?";
    try {
        Map<String, Object> query = qr.query(sql, new MapHandler(), 2);
        for (Entry<String, Object> entry : query.entrySet()) {
            System.out.println(entry.getKey() + ":" + entry.getValue());
        }
    } catch (SQLException e) {
        e.printStackTrace();
    }
}

@Test
public void test6() {
    //MapListHandler
    //适合取多条记录,把每条记录封装到一个Map中,再把Map封装到List中
    QueryRunner qr = new QueryRunner(DBC3P0Utils.getDataSource());
    String sql = "SELECT * FROM account";
    try {
        List<Map<String, Object>> query = qr.query(sql, new MapListHandler());
        for (Map<String, Object> stringObjectMap : query) {
            for (Entry<String, Object> entry : stringObjectMap.entrySet()) {
                System.out.println(entry.getKey() + ":" + entry.getValue());
            }
        }
    } catch (SQLException e) {
        e.printStackTrace();
    }
}

@Test
public void test7() {
    //ScalarHandler
    //适合取单行单列数据
    QueryRunner qr = new QueryRunner(DBC3P0Utils.getDataSource());
    String sql = "SELECT COUNT(*) FROM account";
    try {
        Object o = qr.query(sql, new ScalarHandler());
        System.out.println(o.getClass());//java.lang.Long
        System.out.println("共有" + o + "条数据");
    } catch (SQLException e) {
        e.printStackTrace();
    }
}

@Test
public void test8() {
    //BeanHandler
    //适合取单行多列数据
    QueryRunner qr = new QueryRunner(DBC3P0Utils.getDataSource());
    String sql = "SELECT * FROM account WHERE id = ?";
    try {
        Account account = qr.query(sql, new BeanHandler<Account>(Account.class), 2);
        System.out.println(account);
    } catch (SQLException e) {
        e.printStackTrace();
    }
}

@Test
public void test9() {
    //BeanListHandler
    //适合多行多列
    QueryRunner qr = new QueryRunner(DBC3P0Utils.getDataSource());
    String sql = "SELECT * FROM account";
    try {
        List<Account> accounts = qr.query(sql, new BeanListHandler<Account>(Account.class));
        for (Account account : accounts) {
            System.out.println(account);
        }
    } catch (SQLException e) {
        e.printStackTrace();
    }
}
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值