返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >Mybatis中 list.size() = 1 但显示 All elements are null
  • 884
分享到

Mybatis中 list.size() = 1 但显示 All elements are null

mybatis 2023-09-03 19:09:03 884人浏览 安东尼
摘要

一、Bug展示 二、原因分析 2.1.情形一:Mybatis的XML中返回类型映射错误 select MER_ID,SETTLE_DATE,ICE_NAME,ORDER_STATUS,ORDER_CODE,ORDER_DE

一、Bug展示

二、原因分析

2.1.情形一:Mybatis的XML中返回类型映射错误

        select MER_ID,SETTLE_DATE,ICE_NAME,ORDER_STATUS,ORDER_CODE,ORDER_DESC,        COUNT(*) AS SUM_COUNT,SUM(ORDER_AMT) AS SUM_AMT        FROM order_info_${ny}                                    AND SETTLE_DATE = #{settleDate}                            GROUP BY SETTLE_DATE

 在此时,resultType中对应的是实体bean,但由于参数不完全对应或参数类型不完全匹配,造成查询到的数据不能正常返回。此时可以调整实体bean或修改xml,使字段完全对应;或者使用resultMap重新定义返回参数,示例如下:

                                 *  *  *  *  *  *  *  *  *  *  *  *  *  *  *             

2.2.情形二:使用了Mysql中的聚合函数

在使用mysql中的聚合函数,分别是求和函数SUM()、求平均函数AVG()、最大值函数MAX()、最小值函数MIN()和计数函数COUNT, 进而导致出现size = 1,但结果为空的情况。

此时无论是否数据库中是否有值, 返回都不为空。通过上面debug步骤发现, list.size() = 1,但List中值为空, 显示All elements are null

此时在无法优化xml的情况下,可以调整业务层代码,例如:

if (CollectionUtils.isNotEmpty(listData) && listData.get(0) != null) {        *  *  *  *  *  *  *  *  *  *  *  *  *  *  * }

手动将这种情况给排除掉。或者,先把list中的null元素给排除掉,然后在进行业务的数据处理

//移除第一个null list.remove(null);  //或移除所有的null元素 list.removeAll(Collections.singleton(null)); 

三、聚合函数 

Java 使用聚合函数查询时,返回的结果一定不为null的原因是聚合函数的定义决定了它们的行为。聚合函数用于对一组值进行计算,并返回一个结果。根据聚合函数的定义,它们总是返回一个非空的结果,即使输入为空或无效。这是为了确保计算的一致性和可靠性。

        举个例子,如果你使用 SUM() 聚合函数计算一组数值的总和,即使输入为空,它也会返回0作为结果。同样地,如果你使用 AVG() 聚合函数计算一组数值的平均值,即使输入为空,它也会返回0作为结果。

        因此,Java 使用聚合函数查询时,可以确保返回的结果一定不为null,而是根据聚合函数的定义返回一个合适的值。同样的,这也造成数据在一定情况下需要手动排查掉NULL的情况。
 

转自:Mybatis中 list.size() = 1 但显示 All elements are null_棒棒糖的糖不含糖的博客-CSDN博客

来源地址:https://blog.csdn.net/gaoshan12345678910/article/details/132585571

--结束END--

本文标题: Mybatis中 list.size() = 1 但显示 All elements are null

本文链接: https://lsjlt.com/news/392696.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作