commons-dbutils学习——QueryRunner类和ResultSetHandler接口介绍

Posted shengwangmei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了commons-dbutils学习——QueryRunner类和ResultSetHandler接口介绍相关的知识,希望对你有一定的参考价值。

commons-dbutils学习
——QueryRunner类和ResultSetHandler接口介绍

一、commons-dbutils.jar
  commons-dbutils.jar是Apache Commons组件中的一员,它是对JDBC进行简单封装的开源工具类库。

二、commons-dbutils.jar之QueryRunner类和ResultSetHandler接口
 

  1. QueryRunner的方法  
  • QueryRunner():构造方法; 
  • update():执行insert、update、delete;
  • query():执行select语句;
  • batch():执行批处理。
  1. ResultSetHandler接口
    (1)BeanHandler:单行处理器,构造器需要传入Class类型的参数,用来把一行结果转换成指定类型的javaBean对象。
      @Test
      public void demo1(){
      DataSource ds = JdbcUtils.getDataSource();
      QueryRunner qr = new QueryRunner(ds);
      String sql = "select * from t_user where username=?";
      User user = qr.query(sql,new BeanHandler(User)(User.class),"zs");
      System.out.println(user);
      }
    查询到的结果(单行):User [username=zs, password=zs, age=22, gender=女]

(2)BeanListHandler:多行处理器,把结果集转换成List<Map<String,Object>>,构造器也是需要一个Class类型的参数,用来把一行结果集转换成一个javabean,那么多行就是转换成List对象,一堆javabean。
@Test
public void demo2() throws SQLException{
QueryRunner qr = new QueryRunner(JDBCUtils.getDataSource());
String sql = "select * from t_user";
List

(3)MapHandler:单行处理器, 把一行结果集转换Map对象。
@Test
public void demo3() throws SQLException{
QueryRunner qr = new QueryRunner(JDBCUtils.getDataSource());
String sql = "select * from t_user WHERE USERNAME=?";
Object[] params = {"cym"};
Map map = qr.query(sql, new MapHandler(),params);
System.out.println(map);
}
查询到的结果(单行):{password=cym, gender=男, age=20, username=cym}

(4)MapListHandler:多行处理器,把结果集转换成List<Map<String,Object>>。
@Test
public void demo4() throws SQLException{
QueryRunner qr = new QueryRunner(JDBCUtils.getDataSource());
String sql = "select * from t_user";
List<Map<String,Object>> mapL = qr.query(sql, new MapListHandler());
System.out.println(mapL);
}
查询到的结果(多行):
[{password=cym, gender=男, age=20, username=cym},
{password=123, gender=男, age=20, username=张三},
{password=zs, gender=女, age=22, username=zs},
{password=ls, gender=男, age=23, username=ls}]

(5)ScalarHandler:单行单列,常与count()连用。
public void fun4() throws SQLException{
QueryRunner qr = new QueryRunner(JDBCUtils.getDataSource());
String sql = "select count(
) from t_user";
Number number = (Number)qr.query(sql, new ScalarHandler());
int i = number.intValue();
System.out.println(i);
}
查询到的结果(单行单列):4。
  这里需要注意的是:query查询出的类型需要进行Number的转换,不同版本的jar包返回的类型是有差异的,并且和oracle驱动包的返回类型也有差异(BigInteger),为了避免在以后更新驱动包后产生不必要的问题,我们需要进行一些操作,这些数值类型有共同的父类为Number,因此可以进行转换:
Number number = (Number)qr.query(sql, new ScalarHandler());
//根据需要转换成相应的类型
int i = number.intValue();





















































以上是关于commons-dbutils学习——QueryRunner类和ResultSetHandler接口介绍的主要内容,如果未能解决你的问题,请参考以下文章

Apache的DBUtils框架学习

泛型的使用:模拟写出commons-dbutils

javaweb学习总结—Apache的DBUtils框架学习

javaweb学习总结—Apache的DBUtils框架学习

Commons-dbutils框架

Commons-dbutils框架