激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務(wù)器之家 - 編程語言 - JAVA教程 - Mybatis中注解@MapKey的使用詳解

Mybatis中注解@MapKey的使用詳解

2020-06-27 13:14mrr JAVA教程

mybatis的原身是ibatis,現(xiàn)在已經(jīng)脫離了apache基金會。這篇文章主要介紹了Mybatis中注解@MapKey的使用的相關(guān)資料,需要的朋友可以參考下

mybatis的原身是ibatis,現(xiàn)在已經(jīng)脫離了apache基金會,新官網(wǎng)是http://www.mybatis.org/

在研究Mybatis源碼之前并不知道這個注解的妙用的,但是當我看到參數(shù)解析的時候 有這個一個注解,所以我了解了一下,當我們返回像Map<String, Map<String, Object>>這種類型的時候,我們往往很難做到,因為這里面可能是多個表的數(shù)據(jù),所以我們不可能再建一個模型。

這時候我們就可以使用這個注解了

?
1
2
3
4
5
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface MapKey {
String value();
}

很明顯,這個注解是作用在方法上面的,具體的用法就是設(shè)置外面Map的KEY是什么。這樣我們就能夠查詢出非常復雜的結(jié)果,而不用在建立一個新的實體.

PS:下面看下MyBatis使用@MapKey注解接收多個查詢記錄到Map中,以便方便地用get()方法獲取字段的值

需求場景:

批量從數(shù)據(jù)庫查出若干條數(shù)據(jù),包括id和name兩個字段。希望可以把結(jié)果直接用Map接收,然后通過map.get(id)方便地獲取name的值。

問題:

如果使用下面的代碼,則如果查詢結(jié)果是多條就會報錯,因為MyBatis是把結(jié)果以("id":123)、("name":"Jack")的形式保存在Map中的。所以如果返回結(jié)果一條包括了id和name的記錄就沒問題;如果返回多條記錄,即有多個("id":123)、("id":124),則MyBatis就傻掉不知如何處理了。

?
1
Map<String, Object> m = abcDao.getNamesByIds(idList);

解決的方法是在外面再用一個Map:

?
1
Map<Integer, Map<String, Object>> m = abcDao.getNamesByIds(idList);

然后,在這個dao的方法上面加一個注解:

?
1
2
3
4
5
6
7
<span style="white-space:pre"> </span>/**
<span style="white-space:pre"> </span> * 根據(jù)多個id批量獲取名稱
<span style="white-space:pre"> </span> * @param list 包含有Map key="id"的list
<span style="white-space:pre"> </span> * @return
<span style="white-space:pre"> </span> */
<span style="white-space:pre"> </span>@MapKey("id")
<span style="white-space:pre"> </span>public Map<Integer, Map<String, Object>> getNamesByIds(List<Map<String, Object>> list);

這個注解表示最外層Map的key為查詢結(jié)果中字段名為“id”的值。

Mapper.xml中的配置如下:

?
1
2
3
4
5
6
<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>

以上所述是小編給大家介紹的Mybatis中注解@MapKey的使用詳解,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務(wù)器之家網(wǎng)站的支持!

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 麻豆视频在线免费观看 | 日韩黄色免费观看 | 日韩高清影视 | 色淫网站免费视频 | 狠狠操视频网站 | 久久国产精品99久久人人澡 | 国产成年人在线观看 | 久久精品片 | 性猛交ⅹxxx乱巴西 在线播放中文 | 国产欧美日韩视频在线观看 | av在线免费看网站 | 主播粉嫩国产在线精品 | 午夜热门福利 | 国产美女的小嫩bbb图片 | 91av久久| 国产资源在线视频 | 国产精品久久久久久久久久iiiii | 久久99精品久久久久久久久久久久 | 午夜一级 | 日韩视| 91网站免费观看 | 久在线播放 | 毛片在线视频观看 | 成人免费在线视频 | 欧美性生活久久久 | 国产chinesehd精品91 | 国产日产精品一区四区介绍 | 欧美性生视频 | 国产亚洲精品久久久久久久 | 九九热色 | 欧美成人精品一区二区 | 一级片九九 | 久久久久久久高清 | 色综合视频网 | 视频一区二区三区中文字幕 | 久久精品亚洲精品国产欧美kt∨ | 国产精品久久久久久久久久东京 | 国产精品久久久久久久模特 | 国产女做a爱免费视频 | 欧美精品免费一区二区三区 | 国产一级淫 |