欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

mybatis返回結果為Map問題

 更新時間:2025年04月11日 08:34:40   作者:魚香Ross  
這篇文章主要介紹了mybatis返回結果為Map問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

mybatis返回結果為Map

表:members 中的gender 列是這樣:

Female
Female
Male
Female
Male
Male
Male
Male
Male

現(xiàn)在我們想統(tǒng)計 members 中男女人數(shù)分別是多少,很顯然返回的結果應該是這樣的:

Femal: 3
Male: 6

對應的xml文件中的查詢語句:

<select id="genderCount" resultMap="genderCount">
    select
        gender,
        count(gender) count
    from members
    group by gender
  </select>

<resultMap id="genderCount" type="java.util.HashMap">
    <result column="gender" property="key" javaType="java.lang.String"/>
    <result column="count" property="value" javaType="java.lang.Integer"/>
</resultMap>

問題一

按照常規(guī)想法,mybatis 返回的結果應該是 map 對象,并且里面包含兩個 entry。

所以,對應的 mapper 接口應該是這樣的子的:

Map<String, Integer> getGenderCount();

但這樣定義接口會異常,大概的意思是:查詢結果要么是 null,要么是只有一個,而現(xiàn)在卻出現(xiàn)多個結果。

這樣的報錯信息很明顯了,mapper 接口應該定義成:

List<Map<String, Integer>> getGenderCount();

xml 文件中的查詢結果是個 list,這個 list 中包含兩個 map 對象,每一個 map 對象中只包含一個entry。

(好像使用 resultHandler 可以讓xml中查詢的返回結果為 map 對象中包含兩個 entry 這種形式)

問題二

list 中有兩個map,那每個 map 中的 entry 是什么呢?

同樣是按照常規(guī)想法,兩個map 中應該分別應該是:{Femal:3},{Male: 6}。

但實際的返回結果是:

[
map1:{
	key:Femal,
	value: 3
}
map2:{
	key:Male,
	value: 6
}
]

所以需要轉(zhuǎn)換成我們期望的類型。

在這個demo中,需要將 mapper 接口定義成這樣子。

List<Map<String, Object>> getGenderCount();

因為 value 的類型能是 String 可能是 Integer。

對xml查詢的 List<Map<String, Object>> 結果做轉(zhuǎn)化,代碼如下:

private Map<String, Integer> getMetricsLatestVersion(
      List<Map<String, Object>> genderCountList) {

    Map<String, Integer> genderCount = new HashMap<>();
    for (Map<String, Object> kv : genderCountList) {
      String key = null;
      Integer value = null;

      for (Map.Entry<String, Object> entry : kv.entrySet()) {
        if (entry.getKey().equals("key")) {
          key = (String) entry.getValue();
        } else {
          value = (Integer) entry.getValue();
        }
      }
      genderCount.put(key, value);
    }
    return genderCount;
  }

總結

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • java構造方法的作用總結

    java構造方法的作用總結

    在本篇文章里小編給大家整理了關于java構造方法的相關知識點以及實例代碼,有需要的朋友們可以學習下。
    2019-07-07
  • Apache Shrio安全框架實現(xiàn)原理及實例詳解

    Apache Shrio安全框架實現(xiàn)原理及實例詳解

    這篇文章主要介紹了Apache Shrio安全框架實現(xiàn)原理及實例詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-04-04
  • JAVA創(chuàng)建和銷毀對象的方法

    JAVA創(chuàng)建和銷毀對象的方法

    本篇文章主要介紹了JAVA創(chuàng)建和銷毀對象的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02
  • Java Excel透視表相關操作實現(xiàn)代碼

    Java Excel透視表相關操作實現(xiàn)代碼

    這篇文章主要介紹了Java Excel透視表相關操作實現(xiàn)代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-08-08
  • String s = new String(''a '') 到底產(chǎn)生幾個對象

    String s = new String(''a '') 到底產(chǎn)生幾個對象

    這篇文章主要介紹了String s = new String(" a ") 到底產(chǎn)生幾個對象,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-05-05
  • Spring中的@PostConstruct注解使用方法解析

    Spring中的@PostConstruct注解使用方法解析

    這篇文章主要介紹了Spring中的@PostConstruct注解使用方法解析,@PostConstruct注解是用來處理在@Autowired注入屬性后init()方法之前,對一些零散的屬性進行賦值的注解,需要的朋友可以參考下
    2023-11-11
  • SpringCloud Bus消息總線的實現(xiàn)

    SpringCloud Bus消息總線的實現(xiàn)

    消息總線是一種通信工具,可以在機器之間互相傳輸消息、文件等,這篇文章主要介紹了SpringCloud Bus消息總線的實現(xiàn),Spring cloud bus 通過輕量消息代理連接各個分布的節(jié)點,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05
  • 使用logback配置按天和文件大小切割輸出日志

    使用logback配置按天和文件大小切割輸出日志

    這篇文章主要介紹了使用logback配置按天和文件大小切割輸出日志方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • java仿QQ連連看游戲

    java仿QQ連連看游戲

    這篇文章主要為大家詳細介紹了java仿QQ連連看游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • 在Intellij Idea中使用jstl標簽庫的方法

    在Intellij Idea中使用jstl標簽庫的方法

    這篇文章主要介紹了在Intellij Idea中使用jstl標簽庫的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05

最新評論