二,一个实现ResultHandler的实现类(将map结果进行对应的封装)
public class MyResultHandler implements ResultHandler{
@SuppressWarnings("rawtypes")
private final Map mappedResults = new HashMap();
@SuppressWarnings("unchecked")
@Override
public void handleResult(ResultContext context) {
@SuppressWarnings("rawtypes")
Map map = (Map) context.getResultObject();
mappedResults.put(map.get("key"), map.get("value")); // xml配置里面的property的值,对应的列
}
@SuppressWarnings("rawtypes")
public Map getMappedResults() {
return mappedResults;
}
}
三,一个实现SqlSessionDaoSupport 接口的实现类 (在其中调用重写了ResultHandler的实现类的方法)
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.support.SqlSessionDaoSupport;
import org.springframework.stereotype.Repository;
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.Map;
@Repository
public class SessionMapper extends SqlSessionDaoSupport {
@Override
@Resource
public void setSqlSessionFactory(SqlSessionFactory sqlSessionFactory) {
super.setSqlSessionFactory(sqlSessionFactory);
}
/**
* @return
*/
@SuppressWarnings("unchecked")
public Map
MyResultHandler handler = new MyResultHandler();
//namespace : XxxMapper.xml 中配置的地址(XxxMapper.xml的qualified name)
//.selectXxxxNum : XxxMapper.xml 中配置的方法名称
//this.getSqlSession().select(namespace+".selectXxxxNum", handler);
this.getSqlSession().select(xxxMapper.class.getName()+".queryBySaleNameList",paramMap, handler);
Map
return map;
}
}
四,调用重写了的方法
Map resp = sessionMapper.queryBySaleNameList(paramMap);
总结:其实就是重写了mybatis的一套调用流程 使用我们自己重写后的方法实现查询结果的封装.