【SpringBoot结合Mybatis】数据库某节点值为空时,接口未重返该字段解决方式

原创
小哥 3年前 (2022-11-07) 阅读数 12 #C#
文章标签 .net

【SpringBoot整合Mybatis当数据库字段为空时,接口不会返回该字段。 解决办法

今天的集成项目被发现了。SpringBoot整合Mybatis当数据库中该记录中的字段为空时,select查询时,不返回此字段,然后最终发现问题,在此做一个简单的总结,以避免下次出现此类问题。

问题描述:

我的要求是:根据父节点。ID查询其子节点的所有记录。

问题描述如下。

1首先,查看数据库中的记录并记录下来 node_id=30012,parent_node_id=0, parent_node_rule=null, 例如,这个记录。从数据库中可以看出,在当前选定的记录中parent_node_id=null,为空。

输入参数parent_id=0,调用接口进行测试,发现返回的结果不是。partent_node_rule=null此字段。 也就是说,当前的情况是数据库中的字段为。null返回中没有此字段。

故障排除:

1,查看实体类字段的类型。

从图中可以看出,parentNodeRule字段类型为Integer,它是int对于包类,默认值为null。目前没有问题。

2、查看controller对中接口的调用

从图中可以看出,调用接口返回。dmsZhiKongRules此对象。返回是一个对象,那么对象中的字段应该是可访问的,因此在下一步中检查它。xml在配置文件中sql语句。

3、查看xml配置文件

从配置文件中可以看出sql声明已放置parent_node_rule字段查询已经出来,这里没有问题。

解决问题:

从目前的调查情况来看,编写的代码暂时没有发现任何问题,因此应该考虑其他原因。在网上搜索了一上午的数据后,发现这是一个配置文件。 application.yml 配置文件的问题。

因为该项目是团队协作,所以配置文件是共享的,所以我只负责其中的一部分,在编写代码时很少操作。application.yml配置文件,所以我很少在出现问题时考虑这方面,但经过一轮调查,我确实没有发现任何问题。当我检查数据时,我发现可能是配置问题,所以我对这一部分有了一些了解。

从图中可以看出spring此配置已设置non_null,也就将Null情况被过滤掉了!这是数据库中始终存在的字段值。null,不要返回此字段的真实原因!

然后修改此的配置always即,参考以下代码进行比较和修改:

spring:
  jackson:
    default-property-inclusion: always
    date-format: "yyyy-MM-dd"
    time-zone: "GMT+8"

测试:

再次调用接口以查看返回的结果

字段值已成功显示。null这个领域,完美的解决方案!!!!这个问题已经折磨死我了。我一上午都在检查!!!希望大家注意不要犯这样的错误,尽快解决!

参考文献:

https://blog.csdn.net/fshj1106/article/details/105218774

版权声明

所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除