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

mybatis返回結(jié)果為Map問題

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

mybatis返回結(jié)果為Map

表:members 中的gender 列是這樣:

Female
Female
Male
Female
Male
Male
Male
Male
Male

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

Femal: 3
Male: 6

對應(yīng)的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 返回的結(jié)果應(yīng)該是 map 對象,并且里面包含兩個(gè) entry。

所以,對應(yīng)的 mapper 接口應(yīng)該是這樣的子的:

Map<String, Integer> getGenderCount();

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

這樣的報(bào)錯(cuò)信息很明顯了,mapper 接口應(yīng)該定義成:

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

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

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

問題二

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

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

但實(shí)際的返回結(jié)果是:

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

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

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

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

因?yàn)?value 的類型能是 String 可能是 Integer。

對xml查詢的 List<Map<String, Object>> 結(jié)果做轉(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;
  }

總結(jié)

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

相關(guān)文章

  • 教你一步到位部署運(yùn)行MyBatis3源碼(保姆級)

    教你一步到位部署運(yùn)行MyBatis3源碼(保姆級)

    一個(gè)框架的運(yùn)行流程從最簡單的一個(gè)helloworld來看其源碼就能了解到框架的原理是什么,這篇文章主要給大家介紹了關(guān)于如何一步到位部署運(yùn)行MyBatis3源碼的相關(guān)資料,需要的朋友可以參考下
    2022-06-06
  • Java內(nèi)部類原理與用法實(shí)例總結(jié)

    Java內(nèi)部類原理與用法實(shí)例總結(jié)

    這篇文章主要介紹了Java內(nèi)部類原理與用法,結(jié)合實(shí)例形式總結(jié)分析了非靜態(tài)內(nèi)部類、靜態(tài)內(nèi)部類、局部類等相關(guān)概念、原理、用法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2018-08-08
  • java代碼如何實(shí)現(xiàn)存取數(shù)據(jù)庫的blob字段

    java代碼如何實(shí)現(xiàn)存取數(shù)據(jù)庫的blob字段

    這篇文章主要介紹了java代碼如何實(shí)現(xiàn)存取數(shù)據(jù)庫的blob字段問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • SpringBoot中使用JdbcTemplate訪問Oracle數(shù)據(jù)庫的案例詳解

    SpringBoot中使用JdbcTemplate訪問Oracle數(shù)據(jù)庫的案例詳解

    JdbcTemplate是Spring框架中的一個(gè)核心類,用于簡化Java應(yīng)用程序與關(guān)系型數(shù)據(jù)庫的交互操作,本文給大家介紹SpringBoot中使用JdbcTemplate訪問Oracle數(shù)據(jù)庫的方法,感興趣的朋友跟隨小編一起看看吧
    2023-10-10
  • 帶你了解Java中的Mono接口

    帶你了解Java中的Mono接口

    Mono是ProjectReactor庫的核心類型之一,用于處理0或1個(gè)元素的異步數(shù)據(jù)流,本文主要介紹了帶你了解Java中的Mono接口,具有一定的參考價(jià)值,感興趣的可以了解一下
    2026-04-04
  • Spring+SpringMVC+MyBatis整合詳細(xì)教程(SSM)

    Spring+SpringMVC+MyBatis整合詳細(xì)教程(SSM)

    Spring是一個(gè)開源框架,Spring是于2003 年興起的一個(gè)輕量級的Java 開發(fā)框架。這篇文章主要介紹了Spring+SpringMVC+MyBatis整合詳細(xì)教程(SSM),需要的朋友可以參考下
    2017-10-10
  • 后端Long類型ID傳給前端精度丟失(變00)的原因分析及解決方案

    后端Long類型ID傳給前端精度丟失(變00)的原因分析及解決方案

    在Java中l(wèi)ong是一種基本數(shù)據(jù)類型,用于存儲(chǔ)64位的整數(shù)值,這篇文章主要介紹了后端Long類型ID傳給前端精度丟失(變00)的原因分析及解決方案,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2026-03-03
  • Java中的隨機(jī)數(shù)Random

    Java中的隨機(jī)數(shù)Random

    這篇文章主要介紹了Java中的隨機(jī)數(shù)Random,關(guān)于隨機(jī)數(shù)的介紹不設(shè)置隨機(jī)數(shù)種子,你每次隨機(jī)抽樣得到的數(shù)據(jù)都是不一樣的。設(shè)置了隨機(jī)數(shù)種子,能夠確保每次抽樣的結(jié)果一樣,下面來了解具體的詳細(xì)內(nèi)容介紹吧
    2022-03-03
  • Java控制語句之if、switch語句

    Java控制語句之if、switch語句

    這篇文章主要介紹了Java控制語句之if、switch語句的相關(guān)資料,需要的朋友可以參考下
    2016-01-01
  • Java ConcurrentHashMap如何合理指定初始容量

    Java ConcurrentHashMap如何合理指定初始容量

    本文主要介紹了Java ConcurrentHashMap如何合理指定初始容量,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-10-10

最新評論

延边| 营口市| 乾安县| 双柏县| 上思县| 禹州市| 兴城市| 崇义县| 青岛市| 宁德市| 剑河县| 荆州市| 教育| 镇江市| 大洼县| 彩票| 渭源县| 阿尔山市| 鄄城县| 隆安县| 区。| 印江| 玉屏| 治县。| 贞丰县| 石首市| 广平县| 阜平县| 蓝山县| 体育| 尚志市| 兴海县| 龙游县| 岳普湖县| 垦利县| 东城区| 永福县| 申扎县| 临江市| 紫金县| 崇礼县|