1. 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);
        });

在这里插入图片描述

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐