mybatis将查询结果分别封装到map的 key 和 value 中

 

一,mapper.xml中的查询配置:


 
 




二,一个实现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 queryBySaleNameList(HashMap paramMap){
        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 map = handler.getMappedResults();
        return map;
    }
}

四,调用重写了的方法

Map resp = sessionMapper.queryBySaleNameList(paramMap);

总结:其实就是重写了mybatis的一套调用流程  使用我们自己重写后的方法实现查询结果的封装.

你可能感兴趣的:(mybatis将查询结果分别封装到map的 key 和 value 中)