淺談Mybatis中resultType為hashmap的情況
現(xiàn)在有一張user表
id ,name,age
我們進行一個簡單的查詢:
<select id="test" resultType="Uer"> select id ,name,age from user </select>
查詢完后,怎么去接收這個查詢結(jié)果呢,通常在這個mapper.xml對應(yīng)的接口中使用List<User>做為返回值去接收,最后存儲的樣子就是下面的圖

這是一個很簡單的單表查詢操作,其實這種簡單的單表查詢操作不需要引入User類,直接使用resultType="hashmap",接口中使用List<Object>做為返回值去接(hashmap也是對象的一種所以可以直接使用Obeject),讓查詢結(jié)果自動封裝成Map對象存入list中也可以返回
<select id="test" resultType="hashmap"> select id ,name,age from user </select>
當(dāng)使用hashmap作為返回值類型時,Mybatis會自動將字段名作為key值,將對應(yīng)的字段值作為value封裝到map中,一條記錄有多個字段,產(chǎn)生多個key-value鍵值對存到一個map對象中,多條記錄就會生成多個map對象,多個map對象存到list中返回

注意:如果字段對應(yīng)的值為空,那么在封裝map的時候,這個字段會直接被忽略調(diào)。
補充知識:resultType="java.util.HashMap" sql返回的null值,不在map里面
問:
mapper配置如下
<select id="query_user_info_by_list" resultType="java.util.HashMap"> select id,name,nickname,status from user order by create_time desc </select>
name, nickname 有的是null
這樣導(dǎo)致,查詢出來的map,本來map.size=4的
但是,如果查詢出來的name為null,那么返回的hashmap里面就沒有name了
同樣,nickname也是一樣,請問,如何解決這個問題
我不想在sql里面用nvl函數(shù)去做
答:
<settings> <setting name="callSettersOnNulls" value="true"/> </settings>
把這個加到你的mybatis-config.xml里。
以上這篇淺談Mybatis中resultType為hashmap的情況就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
在CentOS系統(tǒng)上安裝Java?JDK?8簡單步驟
最近購買一臺新的云服務(wù)器,用于開發(fā)學(xué)習(xí)使用,因此需要安裝很多的組件,下面這篇文章主要給大家介紹了關(guān)于在CentOS系統(tǒng)上安裝Java?JDK8的簡單步驟,需要的朋友可以參考下2023-12-12
spring-boot 多線程并發(fā)定時任務(wù)的解決方案
這篇文章主要介紹了spring-boot 多線程并發(fā)定時任務(wù)的解決方案,需要的朋友可以參考下2019-08-08
SpringBoot2.x 整合 thumbnailator 圖片處理的示例代碼
這篇文章主要介紹了SpringBoot2.x 之整合 thumbnailator 圖片處理,本文通過示例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-10-10
java web中 HttpClient模擬瀏覽器登錄后發(fā)起請求
這篇文章主要介紹了java web中 HttpClient模擬瀏覽器登錄后發(fā)起請求的相關(guān)資料,需要的朋友可以參考下2017-05-05
Java中的定時任務(wù)調(diào)度Quartz舉例詳解
這篇文章主要介紹了Java中的定時任務(wù)調(diào)度Quartz的相關(guān)資料,Quartz是Java平臺上的一個強大且靈活的任務(wù)調(diào)度庫,廣泛應(yīng)用于企業(yè)級應(yīng)用中,本文介紹了Quartz的基本概念、核心組件、使用步驟和示例,幫助你更好地利用Quartz進行定時任務(wù)調(diào)度,需要的朋友可以參考下2024-12-12
解決maven打包排除類不生效maven-compiler-plugin問題
總結(jié):在Spring Boot項目B中作為項目A的依賴時,排除啟動類不生效的原因是被其他類引用或父POM引入,解決方法是跳過test編譯或注釋掉@SpringBootTest(classes={BApplication.class})2024-11-11

