IBatis学习关于大型数据集的问题

在IBatis中使用RowHandler接口来解决大型数据集的问题:

   RowHandler接口定义非常简单:

        public interface RowHandler(){

                 void handlerow(Object valueObject) ;

        }

 

其中每一条记录与对应的pojo类的xml文件中的查询语句的resultClass相对应:Xxx.xml--><select ···resultClass>,使用的时候强转一下valueobject的类型即可。

例:

配置文件中:Employee.queryOneEmployee

 

 <select id="queryOneEmployee" resultClass="employee">
  <![CDATA[
   select empNo,ename,job,mgr,hireDate,sal,comm,deptNo from emp
  ]]>
 </select>

定义一个类继承RowHeadler接口

public class EmpRowHandler implements RowHandler{
 
 private List<Employee> empList=new ArrayList<Employee>();
 public List<Employee> getEmpList() {
  return empList;
 }
 
 
 
 public void handleRow(Object valueObject) {
  Employee employee=(Employee)valueObject;
  employee.setSal(500.0);//修改查询结果的属性
  empList.add(employee);
 }

 

测试代码片段:

    sqlmap.startTransaction();
   
   EmpRowHandler handler=new EmpRowHandler();
   
   sqlmap.queryWithRowHandler("Employee.queryOneEmployee", handler);

   List<Employee> list=handler.getEmpList();
   
   for(Employee emp:list)
   {
    System.out.println(emp.getSal());
   }
   
   sqlmap.commitTransaction();

 

在测试片段中,将查询结果放到对象handler 中,通过对valueObject 的操作获取查询的结果的每一行,通过重写handleRow()方法,实现对查询结果的过滤(可以进行你想要的任何操作)。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值