Mybatis使用Map作为返回类型时,value值为空,字段被隐藏的解决方案

问题描述

我们在项目中使用Mybatis进行查询数据的时候,根据场景需要返回值常常使用Map作为返回类型;

但是当数据库里面的值为空时,查询出来返回的Map对应的字段会被隐藏;

针对字段被隐藏的问题,进行如下的演示:

mapper接口

@Mapper
public interface SqlBaseMapper {
 List<Map<String, Object>> selectMapList();
}

SqlBaseMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.xxkfz.simplememory.mapper.SqlBaseMapper">
      <select id="selectMapList" resultType="Map">
          select id        as id,
                 tmp_id    as tmpId,
                 temp_name as tempName,
                 temp_date as tempDate
          from temp
      </select>
</mapper>

测试结果:

[{TMPID=00003, ID=818020E3F66642308D9334F1B82A6F61, TEMPNAME=tmp测试数据3}, 
{TMPID=00001, ID=E74C9EC, TEMPNAME=xxkfz},
{TMPID=00006, ID=88640EF, TEMPNAME=temp测试数据3}]

可以看出,正因为temp_date数据库里值为空,返回的结果中该字段被隐藏了

解决方案

主要提供了以下几种解决办法:

  • 在配置文件application.yml添加配置
  mybatis:
    configuration:
      call-setters-on-nulls: true
  • 在配置文件mybatis.xml添加配置
 <?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>
         <setting name="callSettersOnNulls" value="true"/>
     </settings>
 </configuration>
  • sql解决(空值赋空)
   nvl(temp_date, ' ') as tempDate
  • 手动添加配置
 @Configuration
 public class MybatisConfig implements ApplicationContextAware {
 
     @Override
     public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
         SqlSessionFactory bean = applicationContext.getBean(SqlSessionFactory.class);
      org.apache.ibatis.session.Configuration configuration = bean.getConfiguration();
      configuration.setCallSettersOnNulls(true);
     }
 }


Mybatis使用Map作为返回类型时,value值为空,字段被隐藏的解决方案


Mybatis使用Map作为返回类型时,value值为空,字段被隐藏的解决方案
转发,点赞,在看,安排一下?

原文始发于微信公众号(SimpleMemory):Mybatis使用Map作为返回类型时,value值为空,字段被隐藏的解决方案

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之家整理,本文链接:https://www.bmabk.com/index.php/post/137746.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之家——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!