QueryRunner类是DbUtils工具类里的核心类之一,提供了多种重载的query方法。
在API里对此类的介绍如下:Executes SQL queries with pluggable strategies for handling ResultSets(执行Sql语句,使用可插拔式策略操作结果集)。
QueryRunner(DataSource ds),其中的一个有参构造方法,不考虑事务问题时就可以用这个构造器直接获取数据库连接,
参数是一个数据库连接对象。
看一下QueryRunner类的源码,这是query的其中一个重载方法,ResultSetHandler接口就提现了可插拔策略,它有多个实现类,来对结果的获取形式进行一个操作。
下面分别介绍几个query重载方法,也就是获取不同的结果使用的几种ResultHandler实现类.
BeanHandler
BeanHandler(Class type),参数是一个Class实例,这里用到了对象关系映射
@Test
public void beanTest() throws SQLException {
QueryRunner qr=new QueryRunner(new ComboPooledDataSource("c3p0"));
String sql="select employee_id employeeId,first_name firstName,last_name lastName,email,"+
"phone_number phoneNumber,job_id jobId,salary,manager_id managerId, department_id departmentId from my_employees where employee_id=?";
Department de = qr.query(sql, new BeanHandler<>(MyEmployees.class),100);
//MyEmployees是一个JavaBean,里面封装的变量代表my_employees表的列名
System.out.println(de);
}
结果图: