- Mapper.xml文件中
<resultMap id="mapResultTest" type="java.util.HashMap">
<result column="id" property="key"/>
<result column="detail" property="value" />
</resultMap>
<select id="test" parameterType="传参类型路径.Param" resultMap="mapResultTest">
select id,detail
from a
where id = #{id}
</select>
2.Mapper接口中
HashMap<String,String> test(@Param("param") Param param);
3.实现ResultHandler接口 ( MyBatis的数据结果集处理器)
package com.xxx.xxx.xxx;
import org.apache.ibatis.session.ResultContext;
import org.apache.ibatis.session.ResultHandler;
import java.util.HashMap;
import java.util.Map;
/**
* 转化sql查询结果集
*/
@SuppressWarnings("all")
public class MapResultHandler implements ResultHandler {
private final HashMap mappedResults = new HashMap();
@Override
public void handleResult(ResultContext resultContext) {
//获取数据
//将数据存成map,其中id对应key,detail对应为value
Map map = (Map)resultContext.getResultObject();
mappedResults.put(map.get("key"), map.get("value"));
}
public HashMap getMappedResults() {
return mappedResults;
}
}
ResultHandler:结果处理器,将查询后的结果进行处理
SuppressWarnings:取消显示警告
ResultContext:结果值上下文
4.实现类调用Mapper
@Resource
private SqlSessionFactory sqlSessionFactory;
@Override
public ApiResponseBody test(){
//传参
Param param = new param();
param.setId("123456");
//创建SqlSession对象
SqlSession sqlSession = sqlSessionFactory.openSession(true);
MapResultHandler handler = new MapResultHandler();
//具体路径
sqlSession.select("com.xxx.xxx.Mapper.test",param,handler);
HashMap<String,String> map = handler.getMappedResults();
sqlSession.close();
return ApiResponseBody.defaultSuccess(map);
}
输出打印结果
System.out.println(map);
map.forEach((k,v)->{
System.out.println("key:"+k);
System.out.println("value:"+v);
});