commons-dbutils学习——QueryRunner类和ResultSetHandler接口介绍
Posted shengwangmei
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了commons-dbutils学习——QueryRunner类和ResultSetHandler接口介绍相关的知识,希望对你有一定的参考价值。
一、commons-dbutils.jar
commons-dbutils.jar是Apache Commons组件中的一员,它是对JDBC进行简单封装的开源工具类库。
二、commons-dbutils.jar之QueryRunner类和ResultSetHandler接口
- QueryRunner的方法
- QueryRunner():构造方法;
- update():执行insert、update、delete;
- query():执行select语句;
- batch():执行批处理。
- 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接口介绍的主要内容,如果未能解决你的问题,请参考以下文章
javaweb学习总结—Apache的DBUtils框架学习