zoukankan      html  css  js  c++  java
  • 使用DbUtils实现增删改查——ResultSetHandler 接口的实现类

            在上一篇文章中《使用DbUtils实现增删改查》,发现运行runner.query()这行代码时。须要自己去处理查询到的结果集,比較麻烦。这行代码的原型是:

    public Object query(Connection conn, String sql, ResultSetHandler<T> rsh, Object... params)

    当中ResultSetHandler是一个接口,实际上。万能的Apache已经为我们提供了众多好用的实现类,如今举比例如以下:

    public class RSHanlderDemo {
    	//ScalarHandler:获取结果集中第一行数据指定列的值,经常使用来进行单值查询
    	@Test
    	public void tes9() throws SQLException{
    		QueryRunner runner = new QueryRunner(new ComboPooledDataSource());
    		Long count = (Long)runner.query("select count(*) from account",new ScalarHandler());
    		System.out.println(count);
    	}
    	
    	//KeyedHandler(name):将结果集中的每一行数据都封装到一个Map里(List<Map>),再把这些map再存到一个map里。其key为指定的列。
    	@Test
    	public void tes8() throws SQLException{
    		QueryRunner runner = new QueryRunner(new ComboPooledDataSource());
    		 Map<Object, Map<String, Object>> map = runner.query("select * from account where money>?", new KeyedHandler("id"),500);
    		System.out.println(map);
    	}
    	//ColumnListHandler:将结果集中某一列的数据存放到List中。

    @Test public void tes7() throws SQLException{ QueryRunner runner = new QueryRunner(new ComboPooledDataSource()); List<Object>list = runner.query("select * from account where money>?

    ", new ColumnListHandler(3),500); System.out.println(list); } //MapListHandler:将结果集中的每一行数据都封装到一个Map里。然后再存放到List @Test public void tes6() throws SQLException{ QueryRunner runner = new QueryRunner(new ComboPooledDataSource()); List<Map<String, Object>> list = runner.query("select * from account where money>?", new MapListHandler(),500); System.out.println(list); } //MapHandler:将结果集中的第一行数据封装到一个Map里。key是列名。value就是相应的值。 @Test public void tes5() throws SQLException{ QueryRunner runner = new QueryRunner(new ComboPooledDataSource()); Map<String, Object> map = runner.query("select * from account where money>?", new MapHandler(),500); System.out.println(map); } //BeanListHandler:将结果集中的每一行数据都封装到一个相应的JavaBean实例中。存放到List里。

    @Test public void tes4() throws SQLException{ QueryRunner runner = new QueryRunner(new ComboPooledDataSource()); List<Account>list = runner.query("select * from account where money>?", new BeanListHandler<Account>(Account.class),500); System.out.println(list); } //BeanHandler:将结果集中的第一行数据封装到一个相应的JavaBean实例中。 @Test public void tes3() throws SQLException{ QueryRunner runner = new QueryRunner(new ComboPooledDataSource()); Account acc = runner.query("select * from account where money>?", new BeanHandler<Account>(Account.class),500); System.out.println(acc); } //ArrayListHandler:把结果集中的每一行数据都转成一个对象数组,再存放到List中。 @Test public void tes2() throws SQLException{ QueryRunner runner = new QueryRunner(new ComboPooledDataSource()); List<Object[]> list = runner.query("select * from account where money>?

    ", new ArrayListHandler(),500); System.out.println(list); } //ArrayHandler:把结果集中的第一行数据转成对象数组。 @Test public void test1() throws SQLException{ QueryRunner runner = new QueryRunner(new ComboPooledDataSource()); Object[] objs = runner.query("select * from account where money>?", new ArrayHandler(),500); System.out.println(objs); } }


    測试时。能够加断点调试,再运行Debug as JUnit Test。

    总结例如以下:

    ①ArrayHandler:把结果集中的第一行数据转成对象数组。
    ②ArrayListHandler:把结果集中的每一行数据都转成一个对象数组。再存放到List中。


    BeanHandler:将结果集中的第一行数据封装到一个相应的JavaBean实例中。
    BeanListHandler:将结果集中的每一行数据都封装到一个相应的JavaBean实例中,存放到List里。


    ⑤MapHandler:将结果集中的第一行数据封装到一个Map里,key是列名,value就是相应的值。
    ⑥MapListHandler:将结果集中的每一行数据都封装到一个Map里,然后再存放到List
    ⑦ColumnListHandler:将结果集中某一列的数据存放到List中。


    ⑧KeyedHandler(name):将结果集中的每一行数据都封装到一个Map里(List<Map>),再把这些map再存到一个map里,其key为指定的列。
    ScalarHandler:获取结果集中第一行数据指定列的值。经常使用来进行单值查询。

  • 相关阅读:
    Python【第五篇】模块、包、常用模块
    Python【第四篇】函数、内置函数、递归、装饰器、生成器和迭代器
    TCP三次握手、四次挥手
    分别用postman和python做post请求接口功能测试
    Python【第三篇】文件操作、字符编码
    Python【第二篇】运算符及优先级、数据类型及常用操作、深浅拷贝
    Python【第一篇】python安装、pip基本用法、变量、输入输出、流程控制、循环
    oracle在windows(含客户端工具pl/sql安装)下安装
    Python【初识篇】简介
    Web jsp开发自学——ajax+servlet+echarts+json+gson 实现ajax传输servlert和echarts的数据,可视化结果
  • 原文地址:https://www.cnblogs.com/mfmdaoyou/p/7041436.html
Copyright © 2011-2022 走看看