Mybatis注解形式返回Map

需求场景:
批量从数据库查出若干条数据,包括id和name两个字段。希望可以把结果直接用Map接收,然后通过map.get(id)方便地获取name的值。
 

然后,在这个Mappper的方法上面加一个注解:

/**
 * 根据多个id批量获取名称
 * @param list 包含有Map key="id"的list
 * @return
 */
@MapKey("id")
public Map<Integer, Map<String, Object>> getNamesByIds(List<Map<String, Object>> list);

这个注解表示最外层Map的key为查询结果中字段名为“id”的值。
 

Mapper.xml中的配置如下:

	<select id="getNamesByIds" resultType="java.util.Map">
		SELECT id, name FROM tb_abc WHERE id IN
		<foreach item="item" collection="list" open="(" separator="," close=")">
        		#{item.id}
		</foreach>
	</select>

上述是基于Mapper.xml文件的返回Map形式。

 

注解返回的Map形式:




@Select("select id,code,name from test where code =#{test} ")
@MapKey("id")
Map<Long,Test> query(@Param("test")String test)

注意:返回的列不能用Results注解值,否则Mybatis是识别不了这个,也可以使用select * from ....之类的,用Map<Long,Map<Object,Object>>接收。

 

 

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值