Mybatis中resultType为map时,null值的字段不返回问题

问题描述

<select id="getCompanyRoadshow" parameterType="map" resultType="map">
        SELECT
           id,
           name,
           addr
        FROM
           user
         WHERE
           id = #{id}  
    </select>

以上查询,当addr字段值在数据库中为null时,返回的结果如下:

{
"id": 1,
"name": "test"
}

正常我们想要的应该是这样:

{
"id": 1,
"name": "test",
"addr": null
}

解决办法

  • null值变成空字符串
SELECT
	id,
	name,
	case when addr is not null
		then addr 
		else  '' 
	end addr
FROM
	user
WHERE
	id = #{id}  
  • 传统项目配置xml文件中配置:
<settings>
		<!-- 指定当结果集中值为 null 的时调用映射对象的 setter(map 对象时为 put)方法 -->
		<setting name="callSettersOnNulls" value="true" />
</settings>
  • springboot项目properties中配置:
mybatis.configuration.call-setters-on-nulls=true

参考文章:https://www.cnblogs.com/ityangshuai/p/12759787.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章