Apache DBUtils框架(二)

299 阅读2分钟

MapHandler实体类:返回结果集中的第一行数据

 public  static void testMapHandler() throws SQLException {
        QueryRunner runner = new QueryRunner(getDataSoure());
        //第一个参数是sql语句,第二参数是结果集,第三个参数是sql语句的?的值
        Map<String ,Object> user = runner.query("select * from t_user where id>?", new MapHandler(), 1);
        System.out.println(user);
    }

运行结果:

因为Map集合嘛,所以我直接输出了

  • (解释一下代码)把数据库中id大于1的第一行数据返回到Map中输出

MapListHandler实体类:返回结果集中的多行数据

 public  static void testMapListHandler() throws SQLException {
        QueryRunner runner = new QueryRunner(getDataSoure());
        //第一个参数是sql语句,第二参数是结果集,第三个参数是sql语句的?的值
        List<Map<String ,Object>> users = runner.query("select * from t_user where id>?", new MapListHandler(), 1);
        System.out.println(users);
    }

运行结果:

  • (解释一下代码)把数据库中id大于1的所有数据返回到Map中存储在List数组中输出,一个Map的值相当于一个用户

KeyedHandler实体类:把所有数据封装到Map集合中

 public  static void testKeyedHandler() throws SQLException {
        QueryRunner runner = new QueryRunner(getDataSoure());
        //第一个参数是sql语句,第二参数是结果集,第三个参数是sql语句的?的值
        Map<String,Map<String ,Object>> users = runner.query("select * from t_user where id>?", new KeyedHandler<String >("name"), 1);
        System.out.println(users);
    }

运行结果:

  • KeyedHandler("name")这个是根据数据库中name的字段当做最外层Map的key值
  • (解释一下代码)把数据库中id大于1的所有数据返回到Map中存储在另外一个Map中,打个比方,{ls=a,ww=b,zl=c},其中的a就是另外一个Map{id=2,name=ls}.就是一个Map嵌套一个Map

ColumnListHandler实体类:把结果集中的某一列保存到List中

public  static void testColumnListHandler() throws SQLException {
        QueryRunner runner = new QueryRunner(getDataSoure());
        //第一个参数是sql语句,第二参数是结果集,第三个参数是sql语句的?的值
      List<String> names = runner.query("select * from t_user where id>?", new ColumnListHandler<String>("name"), 1);
        System.out.println(names);
    }

运行结果:

  • 这个可以通过修改sql语句也可以实现该功能

    ScalarHandler实体类:获取单值

 public  static void testScalarHandler() throws SQLException {
        QueryRunner runner = new QueryRunner(getDataSoure());
        //第一个参数是sql语句,第二参数是结果集,第三个参数是sql语句的?的值
      Integer ruselt = runner.query("select count(*) from t_user where id>?", new ScalarHandler<Integer>(), 1);
        System.out.println(ruselt);
    }

运行结果

  • (代码解释一下)把数据库中id大于1的个数输出

总结:ResultSetHandler接口的十个实现类的用法;废话不多说,直接放图(图来自于DT课堂颜群老师)

  • 如果有错误,欢迎指正!