前言
作者最近使用mybatis寫(xiě)sql查詢(xún),xml中查詢(xún)某表記錄,使用
<!-- 查詢(xún)列表 -->
<select id="queryList" parameterType="com.mrcoder.query"
resultType="map">
select name, category from product
</select>
突然發(fā)現(xiàn),返回的list,居然少了category這個(gè)字段,仔細(xì)一看,發(fā)現(xiàn)數(shù)據(jù)庫(kù)中該值為null.
解決
當(dāng)xml寫(xiě)sql時(shí), resultType="map", mybatis默認(rèn)會(huì)將值為null的字段不返回,這就導(dǎo)致了,你明明查詢(xún)可能是5個(gè)字段,但是因?yàn)槟承┳侄蔚闹禐閚ull,最終返回的字段小于5個(gè).
方案一(使用實(shí)體類(lèi)作為resultType)
意思就是你定義一個(gè)實(shí)體類(lèi)作為返回類(lèi)型,這樣null值也會(huì)填充實(shí)體對(duì)象,就不會(huì)出現(xiàn)這樣情況.
方案二(修改配置)
- 如果你是使用xml配置的mybatis,則加上以下配置
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
<!--解決斑司,查詢(xún)返回結(jié)果含null沒(méi)有對(duì)應(yīng)字段值問(wèn)題-->
<setting name="callSettersOnNulls" value="true"/>
</settings>
</configuration>
- 如果你使用了配置類(lèi)來(lái)配置mybatis的,則加上以下代碼
或者
MybatisConfig.java:
configuration.setCallSettersOnNulls(true);
項(xiàng)目地址
https://github.com/MrCoderStack/SpringBootDemo
請(qǐng)關(guān)注我的訂閱號(hào)
訂閱號(hào).png