ibatis 高级查询技术

1 映射继承,鉴别器(discriminator),根据某列的值来确定要实例化相关类的类型,与switch语句的工作原理类似,很少用,在ibatis in action里有例子
2 rowHandler是一个接口,当ibatis从数据库里取出数据后,将每条数据形成对象后,可以用这个方法对生成的对象进行处理,相当于给开发人员留下的灵活的接口。

//RowHandle生产XML
//   XmlRowHandler rh=new XmlRowHandler();
//   sqlMap.queryWithRowHandler("getAllUsers", "CN", rh);
//   String xmlDoc=rh.getXmlDocument();   
//  
//   System.out.println(xmlDoc);

 

首先要定义一个实现RowHandler的类,如XmlRowHandler,实现handleRow方法

import com.ibatis.sqlmap.client.event.RowHandler;

public class XmlRowHandler implements RowHandler {
 
 public StringBuffer xmlDocument=new StringBuffer("<UserList>");
 
 public void handleRow(Object o) {
  // TODO Auto-generated method stub
  User acc=(User)o;
  xmlDocument.append("<User>");
  
  xmlDocument.append("<UserID>");
  xmlDocument.append(acc.getUserid());
  xmlDocument.append("</UserID>");
  
  xmlDocument.append("<username>");
  xmlDocument.append(acc.getUsername());
  xmlDocument.append("</username>");
  
  xmlDocument.append("<password>");
  xmlDocument.append(acc.getPassword());
  xmlDocument.append("</password>");
  
  xmlDocument.append("<department>");
  xmlDocument.append(acc.getDepartment());
  xmlDocument.append("</department>"); 
  
  xmlDocument.append("</User>");
 }
//取结果
 public String getXmlDocument() {
  
  xmlDocument.append("</UserList>");

  return xmlDocument.toString();
 }

}

 

queryWithRowHandler调用时指定rowhandler,对 每个对象执行,没有返回值

import java.util.ArrayList;
import java.util.List;

import com.ibatis.sqlmap.client.event.RowHandler;

public class FilterRowHandler implements RowHandler {
 
 public List<User> list=new ArrayList<User>();
 
 public void handleRow(Object o) {
  // TODO Auto-generated method stub
  User user=(User)o;
  
  if("Sale".equals(user.getDepartment()))
   list.add(user); 
  
 }

 public List<User> getList() {
  return list;
 }

}

 

//RowHandler过滤数据

FilterRowHandler fh=new FilterRowHandler();
   sqlMap.queryWithRowHandler("getAllUsers", null, fh);
   List<User> ls=fh.getList();//符合条件的结果 

 
   在实际开发中,rowHandler很常用  

你可能感兴趣的:(xml,工作,ibatis)