淺談Mybatis中resultType為hashmap的情況
現(xiàn)在有一張user表
id ,name,age
我們進(jìn)行一個(gè)簡(jiǎn)單的查詢(xún):
<select resultType='Uer'> select id ,name,age from user</select>
查詢(xún)完后,怎么去接收這個(gè)查詢(xún)結(jié)果呢,通常在這個(gè)mapper.xml對(duì)應(yīng)的接口中使用List<User>做為返回值去接收,最后存儲(chǔ)的樣子就是下面的圖
這是一個(gè)很簡(jiǎn)單的單表查詢(xún)操作,其實(shí)這種簡(jiǎn)單的單表查詢(xún)操作不需要引入U(xiǎn)ser類(lèi),直接使用resultType='hashmap',接口中使用List<Object>做為返回值去接(hashmap也是對(duì)象的一種所以可以直接使用Obeject),讓查詢(xún)結(jié)果自動(dòng)封裝成Map對(duì)象存入list中也可以返回
<select resultType='hashmap'> select id ,name,age from user</select>
當(dāng)使用hashmap作為返回值類(lèi)型時(shí),Mybatis會(huì)自動(dòng)將字段名作為key值,將對(duì)應(yīng)的字段值作為value封裝到map中,一條記錄有多個(gè)字段,產(chǎn)生多個(gè)key-value鍵值對(duì)存到一個(gè)map對(duì)象中,多條記錄就會(huì)生成多個(gè)map對(duì)象,多個(gè)map對(duì)象存到list中返回
注意:如果字段對(duì)應(yīng)的值為空,那么在封裝map的時(shí)候,這個(gè)字段會(huì)直接被忽略調(diào)。
補(bǔ)充知識(shí):resultType='java.util.HashMap' sql返回的null值,不在map里面
問(wèn):
mapper配置如下
<select resultType='java.util.HashMap'> select id,name,nickname,status from user order by create_time desc</select>
name, nickname 有的是null
這樣導(dǎo)致,查詢(xún)出來(lái)的map,本來(lái)map.size=4的
但是,如果查詢(xún)出來(lái)的name為null,那么返回的hashmap里面就沒(méi)有name了
同樣,nickname也是一樣,請(qǐng)問(wèn),如何解決這個(gè)問(wèn)題
我不想在sql里面用nvl函數(shù)去做
答:
<settings> <setting name='callSettersOnNulls' value='true'/></settings>
把這個(gè)加到你的mybatis-config.xml里。
以上這篇淺談Mybatis中resultType為hashmap的情況就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. MySQL 8.0新特性 — 管理端口的使用簡(jiǎn)介2. MySQL慢查詢(xún)?nèi)罩镜淖饔煤烷_(kāi)啟3. MySQL處理JSON常見(jiàn)函數(shù)的使用4. Mysql 查詢(xún)JSON結(jié)果的相關(guān)函數(shù)匯總5. MySQL 觸發(fā)器的使用和理解6. 淺析MySQL并行復(fù)制7. MySQL數(shù)據(jù)庫(kù)node使用詳解8. 一文詳解嵌入式SQL9. Sqlserver之死鎖查詢(xún)以及批量解鎖的實(shí)現(xiàn)方法10. 詳解MySQL的sql_mode查詢(xún)與設(shè)置
