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

createh52个月前 (03-06)技术教程10

问题描述

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

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

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

mapper接口

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

SqlBaseMapper.xml




      

测试结果:

[{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添加配置
 
 
 
     
         
     
 
  • 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值为空,字段被隐藏的解决方案

相关文章

Java 判断对象是否所有属性为空,大家觉得这样写可以吗?

序言:在开发Excel数据导入的时候,后台拿到Excel中的数据并接收到List泛型集合中,发现有很多对象的属性全部为null,想通过代码将这些无效的数据给过滤掉,下面是过滤的具体操作。ObjectU...

java8之Optional 判空,简化判空操作

导语在没有用Optional判空之前,你是否也像下面的代码一样判空呢?如果是,请往下看,Optional 相对传统判空的优势。传统阶层判空为什么要用Optional,它到底是什么东西你也看到了上面的那...

Java中的空指针怎么处理?

#暑期创作大赛#Java程序员工作中遇到最多的错误就是空指针异常,无论你多么细心,一不留神就从代码的某个地方冒出NullPointerException,令人头疼。1. 对象设置默认值Object o...

告别空指针-Kotlin这一点把Java比下去了

写Java的各位想必没少被空指针异常(NullpointException)困扰,但在Kotlin中,我们终于可以跟它Say Goodbye了。严格来说,Kotlin中不是消灭了空指针异常,而是通过更...

工作5年总结9种方式,帮你减少Java程序中80%的空指针异常

Java程序员工作中遇到最多的错误就是空指针异常,无论你多么细心,一不留神就从代码的某个地方冒出NullPointerException,真是令人头疼。到底怎么避免空指针异常?下面的方法能够帮助你。1...

「Java」一张图教会你关于null的几种处理方式(内附代码)

对于Java程序员来说,空指针一直是恼人的问题,我们在开发中经常会受到NullPointerException的蹂躏和壁咚。Java的发明者也承认这是一个巨大的设计错误。那么关于null,你应该知道下...