码迷,mamicode.com
首页 > 数据库 > 详细

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

时间:2018-07-18 14:08:07      阅读:192      评论:0      收藏:0      [点我收藏+]

标签:gen   set   pac   问题   返回   int   common   类型   scalar   

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接口介绍

标签:gen   set   pac   问题   返回   int   common   类型   scalar   

原文地址:https://www.cnblogs.com/shengwangmei/p/9328446.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!