MyBatis查询返回Map示例代码
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
MyBatis查询返回Map示例代码 MyBatis是一款流行的持久层框架,提供了强大的查询功能。有时候,我们在查询时,只需要返回两个string类型的字段,方便我们后续的处理。例如根据商品的code查询对应的分类的名字,需要返回一个map,key为商品code,value为商品分类对应的名称。以方便我们后续对结果集的处理。 在MyBatis中,我们可以使用ResultMap来指定查询结果的格式。在本例中,我们将ResultMap定义为一个HashMap,key为商品code,value为商品分类对应的名称。 在mapper.xml文件中,我们定义一个ResultMap: ``` <resultMap id="cateNameMapping" type="java.util.HashMap" > <result property="key" column="commodityCode"></result> <result property="value" column="cateName"></result> </resultMap> ``` 这个map当中的property的定义,是我们在定义ResultHandler的时候,需要用到的.column是我们做sql查询的时候mysql中字段的名称,注意这里不支持驼峰自动映射,例如这里写了commodityCode,后面需要用AS来处理一下。 我们在mapper.xml中写查询语句: ``` <select id="processCateNameMappingByGoodsCodes" parameterType="java.util.List" resultMap="cateNameMapping"> SELECT c.commodity_code AS commodityCode, CONCAT(tc.cate_name,',',tc1.cate_name, ',', tc2.cate_name) AS cateName FROM t_commodity c LEFT JOIN t_category tc ON c.commodity_first_id = tc.id LEFT JOIN t_category tc1 ON c.commodity_second_id = tc1.id LEFT JOIN t_category tc2 ON c.commodity_third_id = tc2.id WHERE c.commodity_code IN <foreach collection="list" separator="," open="(" close=")" item="code"> #[code] </foreach> </select> ``` 注意返回类型为ResultMap,也就是我们上面定义的那个。 我们自定义一个ResultHandler来实现我们想要的结果: ``` package org.linuxsogood.es.statistical.handler; import org.apache.ibatis.session.ResultContext; import org.apache.ibatis.session.ResultHandler; import java.util.HashMap; import java.util.Map; / * @author honway * @date 2018/10/22 11:49. * @blog http://linuxsogood.org */ public class MapResultHandler implements ResultHandler { private final Map<String ,String> mappedResults = new HashMap(); @Override public void handleResult(ResultContext resultContext) { Map<String ,String> m = (Map) resultContext.getResultObject(); mappedResults.put(m.get("key"), m.get("value")); } public Map getMappedResults() { return mappedResults; } } ``` 在这个ResultHandler中,我们将查询结果转换为一个HashMap,然后将其返回给调用者。 通过使用ResultMap和ResultHandler,我们可以轻松地将MyBatis查询结果转换为我们需要的格式,以方便我们后续的处理。
- 粉丝: 9
- 资源: 959
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助