打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
spring mvc+mybatis返回map类型数据为空值时字段不显示问题
userphoto

2022.12.22 海南

关注
  1. <select id="getArticleById" resultType="map">
  2. select
  3. *
  4. from article t
  5. </select>

当返回结果resultType为map时,如果表中字段为空,则返回的map中就会没有这个字段,有时候我们需要即使字段数据为空也要返回这个空字段。

解决方法:

1.查询sql添加每个字段的判断空

IFNULL(id,'') as id

不太建议这种方法,因为经常要使用select *获取,不能每个字段都要判断一下,太麻烦了。

2. 新建一个mybatis-configuration.xml文件

在里面填写如下内容:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD SQL MAP Config 3.1//EN"
  3. "http://mybatis.org/dtd/mybatis-3-config.dtd">
  4. <configuration>
  5. <settings>
  6. <setting name="callSettersOnNulls" value="true"/>
  7. </settings>
  8. </configuration>

然后打开spring-mybatis.xml文件,将新建的mybatis-configuration.xml引进来

  1. <!-- spring和MyBatis完美整合,添加mybatis的配置映射文件 -->
  2. <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  3. <property name="dataSource" ref="dataSource"/>
  4. <!--在这里将config文件引入-->
  5. <property name="configLocation" value="classpath:mybatis-configuration.xml"/>
  6. <!-- 自动扫描mapping.xml文件 -->
  7. <property name="mapperLocations" value="classpath:mapping/*.xml"></property>
  8. </bean>

重启项目,会发现值为空的字段也出现在map中了

推荐使用第二种方法 

补充:当map值返回为null,且又用json返回给前台,且前台用某些表格插件时会报错,因为转json时会将值为null的字段直接忽略,所以转json时最好这样写,加上SerializerFeature.WriteMapNullValue

 return JSON.toJSONString(ret, SerializerFeature.WriteMapNullValue);

这样即使值为null转json后字段也不会消失

 

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
MyBatis与Spring设置callSettersOnNulls
Mybatis分页插件-pagehelper
SqlMapConfig.xml
改变应用程序配置文件的文件名
spring与mybatis整合详解
Spring Boot Mybatis配置项设置
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服