(一)ResultSetHandler结果集处理器接口
功能:将查询结果的列名与JavaBean对象的属性名(setter方法)进行反射赋值,有以下几个常用实现类:
- BeanHandler:JavaBean处理器。将查询结果集的一行并且一行封装成一个javabean对象。
- BeanListHandler:JavaBean列表处理器。 将多行查询集封装成一个javabean列表。
- MapHandler:Map处理器。将查询结果集的一行仅且一行封装成一个Map对象,结果的列名作为key,值作为value;
- MapListHandler: Map列表处理器。返回一个列表其元素为Map,查询结果集的每一行封装成一个Map对象,结果的列名作为key,值作为value;
- ScalarHandler: 标量类型处理器。将只有一行一列的查询结果集封装成一个基本类型的值,如:Select count(*) as rows from employee;
(二)QueryRunner数据库操作类(多线程安全)
Executes SQL queries with pluggable strategies for handling ResultSets. This class is thread safe.
所有对数据库的CRUD操作都通过
QueryRunner runner = new QueryRunner([DataSource]);
来完成,如果创建QueryRunner实例时没有提供DataSource数据源参数则在执行crud操作方法时需提供数据库连接。
//将查询结果集通过反射机制封装成一个JavaBean实体,查询结果的列名将与JavaBean的属性名进行反射(实际上是setter方法)
ResultSetHandler rsh = new BeanHandler(Users.class);
runner.query(conn, sql, rsh [,Object… params]);
//将查询结果集通过反射机制封装成一个JavaBean实体列表
ResultSetHandler rsh = new BeanListHandler (Users.class);
runner.query(conn, sql, rsh [,Object… params]);
a) 查询示例1:普通查询(无占位符参数)
标量查询:这种查询只返回一个常量值,如:count(*),avg(sal)…