1. 程式人生 > 程式設計 >淺談Mybatis中resultType為hashmap的情況

淺談Mybatis中resultType為hashmap的情況

現在有一張user表

id,name,age

我們進行一個簡單的查詢:

<select id="test" resultType="Uer">
   select id,age from user
</select>

查詢完後,怎麼去接收這個查詢結果呢,通常在這個mapper.xml對應的介面中使用List<User>做為返回值去接收,最後儲存的樣子就是下面的圖

淺談Mybatis中resultType為hashmap的情況

這是一個很簡單的單表查詢操作,其實這種簡單的單表查詢操作不需要引入User類,直接使用resultType="hashmap",介面中使用List<Object>做為返回值去接(hashmap也是物件的一種所以可以直接使用Obeject),讓查詢結果自動封裝成Map物件存入list中也可以返回

<select id="test" resultType="hashmap">
   select id,age from user
</select>

當使用hashmap作為返回值型別時,Mybatis會自動將欄位名作為key值,將對應的欄位值作為value封裝到map中,一條記錄有多個欄位,產生多個key-value鍵值對存到一個map物件中,多條記錄就會生成多個map物件,多個map物件存到list中返回

淺談Mybatis中resultType為hashmap的情況

注意:如果欄位對應的值為空,那麼在封裝map的時候,這個欄位會直接被忽略調。

補充知識:resultType="java.util.HashMap" sql返回的null值,不在map裡面

問:

mapper配置如下

<select id="query_user_info_by_list" resultType="java.util.HashMap">
 select id,nickname,status from user order by create_time desc
</select>

name,nickname 有的是null

這樣導致,查詢出來的map,本來map.size=4的

但是,如果查詢出來的name為null,那麼返回的hashmap裡面就沒有name了

同樣,nickname也是一樣,請問,如何解決這個問題

我不想在sql裡面用nvl函式去做

答:

<settings>
 <setting name="callSettersOnNulls" value="true"/>
</settings>

把這個加到你的mybatis-config.xml裡。

以上這篇淺談Mybatis中resultType為hashmap的情況就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。