问题描述
<select id="getUser" 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
}
解决办法
1.将null
值变成空字符串
SELECT
id,
name,
case when addr is not null
then addr
else ''
end addr
FROM
user
WHERE
id = #{id}
2.传统项目配置xml
文件中配置:
<settings>
<!-- 指定当结果集中值为 null 的时调用映射对象的 setter(map 对象时为 put)方法 -->
<setting name="callSettersOnNulls" value="true" />
</settings>
3. springboot
项目properties
中配置:
mybatis.configuration.call-setters-on-nulls=true
4. 在SqlSessionFactoryBean
中配置:
SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
org.apache.ibatis.session.Configuration configuration = new org.apache.ibatis.session.Configuration();
configuration.setCallSettersOnNulls(true);
factoryBean.setConfiguration(configuration);
参考文章:https://www.cnblogs.com/ityangshuai/p/12759787.html