Flask接口签名sign原理与实例代码浅析
625
2023-07-01
Mybatis中注解@MapKey的使用详解
mybatis的原身是ibatis,现在已经脱离了apache基金会,新官网是http://mybatis.org/。
在研究Mybatis源码之前并不知道这个注解的妙用的,但是当我看到参数解析的时候 有这个一个注解,所以我了解了一下,当我们返回像Map
这时候我们就可以使用这个注解了
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface MapKey {
String value();
}
很明显,这个注解是作用在方法上面的,具体的用法就是设置外面Map的KEY是什么。这样我们就能够查询http://出非常复杂的结果,而不用在建立一个新的实体.
PS:下面看下MyBatis使用@MapKey注解接收多个查询记录到Map中,以便方便地用get()方法获取字段的值
需求场景:
批量从数据库查出若干条数cuMZXaNnx据,包括id和name两个字段。希望可以把结果直接用Map接收,然后通过map.get(id)方便地获取name的值。
问题:
如果使用下面的代码,则如果查询结果是多条就会报错,因为MyBatis是把结果以("id":123)、("name":"Jack")的形式保存在Map中的。所以如果返回结果一条包括了id和name的记录就没问题;如果返回多条记录,即有多个("id":123)、("id":124),则MyBatis就傻掉不知如何处理了。
Map
解决的方法是在外面再用一个Map:
Map
然后,在这个dao的方法上面加一个注解:
/**
* 根据多个id批量获取名称
* @param list 包含有Map key="id"的list
* @return
*/
@MapKey("id")
public Map
这个注解表示最外层Map的key为查询结果中字段名为“id”的值。
Mapper.xml中的配置如下:
SELECT id, name FROM tb_abc WHERE id IN
#{item.id}
以上所述是给大家介绍的Mybatis中注解@MapKey的使用详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,会及时回复大家的。在此也非常感谢大家对我们网站的支持!
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~