最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Mybatis中注解@MapKey的使用詳解

 更新時間:2016年10月26日 09:02:36   投稿:mrr  
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源碼之前并不知道這個注解的妙用的,但是當(dāng)我看到參數(shù)解析的時候 有這個一個注解,所以我了解了一下,當(dāng)我們返回像Map<String, Map<String, Object>>這種類型的時候,我們往往很難做到,因?yàn)檫@里面可能是多個表的數(shù)據(jù),所以我們不可能再建一個模型。

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

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface MapKey {
String value();
}

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

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

需求場景:

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

問題:

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

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

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

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

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

<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中的配置如下:

<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的使用詳解,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • java實(shí)現(xiàn)撲克牌分發(fā)功能

    java實(shí)現(xiàn)撲克牌分發(fā)功能

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)撲克牌分發(fā),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • mybatis快速上手并運(yùn)行程序

    mybatis快速上手并運(yùn)行程序

    MyBatis 是一款優(yōu)秀的持久層框架,它支持自定義 SQL、存儲過程以及高級映射。MyBatis 免除了幾乎所有的 JDBC 代碼以及設(shè)置參數(shù)和獲取結(jié)果集的工作。MyBatis 可以通過簡單的 XML 或注解來配置和映射原始類型、接口和 Java POJO為數(shù)據(jù)庫中的記錄
    2022-01-01
  • Spring Data MongoDB 數(shù)據(jù)庫批量操作的方法

    Spring Data MongoDB 數(shù)據(jù)庫批量操作的方法

    在項(xiàng)目開發(fā)中經(jīng)常會批量插入數(shù)據(jù)和更新數(shù)據(jù)的操作,這篇文章主要介紹了Spring Data MongoDB 數(shù)據(jù)庫批量操作的方法,非常具有實(shí)用價值,需要的朋友可以參考下
    2018-11-11
  • java 一鍵部署 jar 包和 war 包

    java 一鍵部署 jar 包和 war 包

    這篇文章主要介紹了Java創(chuàng)建打包命令、創(chuàng)建啟動文件等功能實(shí)現(xiàn)Java一鍵部署 jar 包和 war 包,感興趣的下伙伴可以參考下文
    2021-09-09
  • Java程序中實(shí)現(xiàn)調(diào)用Python腳本的方法詳解

    Java程序中實(shí)現(xiàn)調(diào)用Python腳本的方法詳解

    這篇文章主要介紹了Java程序中實(shí)現(xiàn)調(diào)用Python腳本的方法,結(jié)合實(shí)例形式分析了eclipse環(huán)境中使用Java調(diào)用Python腳本的相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下
    2018-03-03
  • IDEA中java斷言assert語法及使用

    IDEA中java斷言assert語法及使用

    這篇文章主要介紹了IDEA中java斷言assert語法詳解,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-04-04
  • Java單鏈表基本操作的實(shí)現(xiàn)

    Java單鏈表基本操作的實(shí)現(xiàn)

    鏈表是一種數(shù)據(jù)結(jié)構(gòu),和數(shù)組同級。接下來通過本文給大家介紹Java單鏈表基本操作的實(shí)現(xiàn),非常不錯,具有參考借鑒價值,感興趣的朋友一起看下吧
    2016-07-07
  • 新手了解java 集合基礎(chǔ)知識

    新手了解java 集合基礎(chǔ)知識

    今天小編就為大家分享一篇關(guān)于Java集合總結(jié),小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧,希望對你有所幫助
    2021-07-07
  • 踩坑批量更新sql報錯,實(shí)際sql能夠正常執(zhí)行的問題

    踩坑批量更新sql報錯,實(shí)際sql能夠正常執(zhí)行的問題

    在項(xiàng)目工程遷移過程中,遇到了一個批量更新接口在新工程中報錯的問題,通過分析,排除了代碼錯誤的可能,最終發(fā)現(xiàn)是由于數(shù)據(jù)庫連接配置不當(dāng)導(dǎo)致的,在jdbc連接字符串中加入allowMultiQueries=true參數(shù)后,問題得以解決,這個參數(shù)的作用是允許SQL批量執(zhí)行
    2022-12-12
  • 使用jquery 的ajax 與 Java servlet的交互代碼實(shí)例

    使用jquery 的ajax 與 Java servlet的交互代碼實(shí)例

    這篇文章主要介紹了使用jquery 的ajax 與 Java servlet的交互代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-09-09

最新評論

大足县| 彭阳县| 贡山| 来凤县| 三明市| 铁岭市| 清远市| 汕尾市| 海门市| 泗水县| 新郑市| 蓝山县| 孙吴县| 灵石县| 尼玛县| 嵊州市| 泰顺县| 林甸县| 米林县| 洪泽县| 买车| 怀远县| 茂名市| 赫章县| 十堰市| 宜章县| 新龙县| 泸州市| 宜黄县| 皋兰县| 滦平县| 通海县| 邻水| 土默特右旗| 武乡县| 买车| 冀州市| 江门市| 北川| 巫溪县| 寻甸|