Mybatis返回List<Map>格式与@MapKey注解使用

        在业务汇中总会遇到需要直接使用List<Map>返回格式的场景,以下是一个分组统计的案例。

1.Service代码

List<Map<String,Object>> statistics(@Param("name") String name);

2.mapper代码

        在Mapper中直接使用 List 作为 resultType。

<select id="statistics" resultType="java.util.List">
    SELECT type, count(0) FROM table WHERE name LIKE concat('%',#{name}::varchar ,'%') GROUP BY type
</select>

3.运行异常

        运行报错,不支持的操作类型,不能将Map对象返回为一个List。

4.解决

         在Service中的使用List<Map>接收,在mapper中只需要将resultType变为 Map 即可。

<select id="statistics" resultType="java.util.Map">
    SELECT type, count(0) FROM table WHERE name LIKE concat('%',#{name}::varchar ,'%') GROUP BY type
</select>

5.@MapKey注解

        除此之外,在mybatis中有一个@MapKey注解。

        @MapKey 注解用于将查询结果映射为一个 Map 对象,其中 Map 的 key 是指定的列名或属性名,而 value 是查询结果的对象。

        例如,在一个查询中,将查询结果以type字段的值作为 key,将实体对象作为 value 存入 Map 中,就可以使用 @MapKey 注解。

        mapper中的代码不做改动。

@MapKey("type")
List<Map<String, Object>> statistics(@Param("name") String name);

         加了mapKey注解,较之前多了一层key.

  • 10
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值