当前位置: 首页 > news >正文

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

一、Bug展示

二、原因分析

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


<select id="selectByDesc" parameterType="com.task.bean.OrderInfo"resultType="com.task.bean.OrderInfo">select MER_ID,SETTLE_DATE,ICE_NAME,ORDER_STATUS,ORDER_CODE,ORDER_DESC,COUNT(*) AS SUM_COUNT,SUM(ORDER_AMT) AS SUM_AMTFROM order_info_${ny}<where><if test="settleDate != null and settleDate != ''">AND SETTLE_DATE = #{settleDate}</if></where>GROUP BY SETTLE_DATE
</select>

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

<resultMap id="orderInfo" type="com.task.bean.OrderInfo"><result property="orderId" column="ORDER_ID"/><result property="merId" column="MER_ID"/><result property="merName" column="MER_NAME"/>*  *  *  *  *  *  *  *  *  *  *  *  *  *  *<result property="sumCount" column="SUM_COUNT"/>
</resultMap><select id="selectByDesc" parameterType="com.task.bean.OrderInfo"resultMap="orderInfo">    select MER_ID,SETTLE_DATE,ICE_NAME,ORDER_STATUS,ORDER_CODE,ORDER_DESC,COUNT(*) AS SUM_COUNT,SUM(ORDER_AMT) AS SUM_AMTFROM order_info_${ny}<where><if test="settleDate != null and settleDate != ''">AND SETTLE_DATE = #{settleDate}</if></where>GROUP BY SETTLE_DATE
</select>

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元素给排除掉,然后在进行业务的数据处理

//移除第一个nulllist.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博客

相关文章:

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

一、Bug展示 二、原因分析 2.1.情形一&#xff1a;Mybatis的XML中返回类型映射错误 <select id"selectByDesc" parameterType"com.task.bean.OrderInfo"resultType"com.task.bean.OrderInfo">select MER_ID,SETTLE_DATE,ICE_NAME,ORDER_S…...

Soul的社交元宇宙之路,还有多远?

在元宇宙概念爆火的当下&#xff0c;以互联网为依托的虚拟社交逐步为用户承载起其空缺的精神交流与寄托&#xff0c;而在这其中&#xff0c;以“跟随灵魂找到你”为Slogan&#xff0c;主打年轻人社交元宇宙平台的APP--Soul则在这条赛道上凭借着独特的风格&#xff0c;逐步突出重…...

如何解决Memcached缓存击穿和雪崩问题

原文 Memcached是一种快速、高性能的分布式内存对象缓存系统&#xff0c;广泛应用于Web应用的缓存中。然而&#xff0c;Memcached也存在一些常见的问题&#xff0c;如缓存击穿和缓存雪崩。本文将介绍什么是缓存击穿和缓存雪崩&#xff0c;并提供一些解决这些问题的方法&#x…...

uniapp 开发之仿抖音,上下滑动切换视频、点击小爱心效果

效果图&#xff1a; 功能描述&#xff1a; 上下滑动视频&#xff0c;双击暂停&#xff0c;然后第一个视频再往上滑显示”已经滑到顶了“ 开始代码&#xff1a; 首先视频接口使用的公开的视频测试接口 开放API-2.0 官网展示 Swagger UI 接口文档 一…...

【C++设计模式】依赖倒转原则

2023年8月30日&#xff0c;周三上午 目录 概述含义举个简单的例子传统做法使用依赖倒转原则代码说明再举一个具体的例子以生活为例 概述 依赖倒转原则(Dependency Inversion Principle,DIP)是面向对象设计中的一个基本原则。 含义 高层模块不应该依赖低层模块,两者都应该依…...

浙江首例!金华银行基于完全国产自研数据库构建新一代核心系统

6 月 12 日&#xff0c;金华银行举行“星辉工程”核心项目群上线发布会&#xff0c;新一代核心系统部署在国产分布式数据库 OceanBase 上&#xff0c;实现系统的高可用、高性能、国产升级。据悉&#xff0c;这是浙江省首例基于完全国产自研数据库落地的银行核心系统。 金华银行…...

ASP.NET Core 中的 静态文件

Static Files Static Files 包括 HTML&#xff0c;CSS&#xff0c;图片&#xff0c;JavaScript&#xff0c;以及其他静态资源文件。 即网站本身的内容。 Static Files 服务 Static Files 保存在项目的 Web Root 目录&#xff0c;即 wwwroot 文件夹中。 而wwwroot目录是Conte…...

2023年天府杯——C 题:码头停靠问题

问题背景&#xff1a; 某个港口有多个不同类型的码头&#xff0c;可以停靠不同种类的船只。每 艘船只需要一定的时间来完成装卸货物等任务&#xff0c;并且每个码头有容量 限制和停靠时间限制。港口需要在保证收益的情况下&#xff0c;尽可能地提高 运营效率和降低成本。同…...

集丰照明|汽车美容店设计,装修色彩灯光搭配方法

正确处理好店面的空间设计。 店铺各个功能区设计要合理&#xff0c;衔接合理&#xff0c;这样既能提高员工的工作效率也能提高顾客的满意度。合理安排店铺的空间分配&#xff0c; 要给顾客一种舒适度&#xff0c;既不能让顾客感觉到过于拥挤&#xff0c;又不能浪费店铺的有限空…...

性能提升3-4倍!贝壳基于Flink + OceanBase的实时维表服务

作者介绍&#xff1a;肖赞&#xff0c;贝壳找房&#xff08;北京&#xff09;科技有限公司 OLAP 平台负责人&#xff0c;基础研发线大数据平台部架构师。 贝壳找房是中国最大的居住服务平台。作为居住产业数字化服务平台&#xff0c;贝壳致力于推进居住服务的产业数字化、智能…...

取数组中每个元素的最高位

1 题目 /*程序将一维数组a中N个元素的最高位取出&#xff0c;保存在一维数组b的对应位置。 程序运行结果为&#xff1a; a&#xff1a;82 756 71629 5 2034 b: 8 7 7 5 2 */ 2 思考 简单来说就是取一个数据的最高位。 一开始的笨方法没有办法判断数据的长度&#xff0c;后来…...

Docker一键部署Nacos

官方参考文档&#xff1a; https://nacos.io/zh-cn/docs/quick-start-docker.html 本人实践 一、创建数据库&数据表 使用sql脚本创建&#xff1a;https://github.com/alibaba/nacos/blob/master/config/src/main/resources/META-INF/nacos-db.sql 二、新建文件夹并赋权…...

【数学建模】-- 模糊综合评价

模糊综合评价&#xff08;Fuzzy Comprehensive Evaluation&#xff09;是一种用于处理不确定性和模糊性信息的决策分析方法。它通常用于解决复杂的多指标决策问题&#xff0c;其中各指标之间可能存在交叉影响和模糊性的情况。模糊综合评价通过将不确定性和模糊性量化&#xff0…...

Java 数据库改了一个字段, 前端传值后端接收为null问题解决

前端传值后端为null的原因可能有很多种&#xff0c;我遇到一个问题是&#xff0c;数据库修改了一个字段&#xff0c;前端传值了&#xff0c;但是后台一直接收为null值&#xff0c; 原因排查&#xff1a; 1、字段没有匹配上&#xff0c;数据库字段和前端字段传值不一致 2、大…...

lnmp架构-mysql1

1.MySQL数据库编译 make完之后是这样的 mysql 初始化 所有这种默认不在系统环境中的路径里 就这样加 这样就可以直接调用 不用输入路径调用 2.初始化 重置密码 3.mysql主从复制 配置master 配置slave 当master 端中还没有插入数据时 在server2 上配slave 此时master 还没进…...

Threadlocal在项目中的应用

ThreadLocal为每一线程提供一份单独的存储空间&#xff0c;具有线程隔离的作用 PageHelper.startPage()方法使用ThreadLocal来保存分页参数&#xff0c;保证线程安全性。PageHelper通过集成MyBatis的拦截器机制来实现对SQL语句的拦截和修改 项目中使用了ThreadLocal保存每个线程…...

个性化定制你的AI助手,AI指令提示词专家

『个性化定制你的AI助手』围观不如下场&#xff01;需要学习AI指令提升能力的&#xff0c;精准输出想要内容的&#xff0c;快来订阅 javastarboy『AI指令保姆级拆解』合集&#xff01; ▶️你是否尚未挖掘到 AI 的潜力&#xff1f; ▶️你是否经常遇到“答非所问”的“人工智障…...

mongodb聚合排序的一个巨坑

现象&#xff1a; mongodb cpu动不动要100%&#xff0c;如下图 分析原因&#xff1a; 查看慢日志发现&#xff0c;很多条这样的查询&#xff0c;一直未执行行完成&#xff0c;占用大量的CPU [{$match: {"tags.taskId": "64dae0a9deb52d2f9a1bd71e",grnty: …...

无涯教程-分类算法 - 随机森林

随机森林是一种监督学习算法&#xff0c;可用于分类和回归&#xff0c;但是&#xff0c;它主要用于分类问题&#xff0c;众所周知&#xff0c;森林由树木组成&#xff0c;更多树木意味着更坚固的森林。同样&#xff0c;随机森林算法在数据样本上创建决策树&#xff0c;然后从每…...

c#常见的排序算法

在C#中&#xff0c;常见的排序算法包括以下几种&#xff1a; 1. 冒泡排序&#xff08;Bubble Sort&#xff09;&#xff1a;比较相邻的元素&#xff0c;如果顺序不对就交换它们&#xff0c;重复多次直到排序完成。 2. 插入排序&#xff08;Insertion Sort&#xff09;&#xf…...

游戏技能工程化:用数据驱动与计算机视觉构建Apex Legends个人成长系统

1. 项目概述&#xff1a;从“Apex Growth”到“OpenClaw Skill”的爬升之路如果你是一名游戏开发者&#xff0c;尤其是对竞技类FPS&#xff08;第一人称射击&#xff09;游戏感兴趣&#xff0c;那么“Apex Legends”这个名字你一定不陌生。这款游戏以其快节奏、高机动性和深度的…...

AssetStudio完全指南:从Unity资源提取到专业应用的全流程教程

AssetStudio完全指南&#xff1a;从Unity资源提取到专业应用的全流程教程 【免费下载链接】AssetStudio AssetStudio - Based on the archived Perfares AssetStudio, I continue Perfares work to keep AssetStudio up-to-date, with support for new Unity versions and addi…...

保姆级教程:INCA 7.2.3 从新建工程到观测标定的完整流程(附A2L文件处理技巧)

INCA 7.2.3 全流程实战指南&#xff1a;从工程搭建到参数标定的深度解析 在汽车电子开发领域&#xff0c;标定工具链的掌握程度直接影响开发效率。作为行业标准的INCA软件&#xff0c;其7.2.3版本在工程管理、实时观测和参数标定方面提供了更完善的解决方案。本文将采用"操…...

天学网口碑好不好?2026年最新用户实测反馈给你答案

作为深耕教育数字化落地领域5年的从业者&#xff0c;最近后台收到不少公立校电教组老师、学生家长的提问&#xff1a;主打AI英语教学的天学网口碑到底怎么样&#xff1f;刚好我们团队刚做完2026年第一季度的英语教育数字化工具落地效果调研&#xff0c;结合一手实测数据给大家客…...

【独家首发】ElevenLabs乌尔都语语音SDK逆向分析(v2.4.1):提取未文档化emotion_intensity参数,实现新闻播报级庄严语调控制

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;ElevenLabs乌尔都语语音SDK逆向分析全景概览 ElevenLabs 官方未公开乌尔都语&#xff08;ur-PK&#xff09;的独立语音 SDK&#xff0c;但其 Web API 实际支持该语言的 TTS 合成。通过对官方 JS SDK&am…...

Grad-CAM实战:用热力图透视神经网络的决策焦点

1. Grad-CAM技术初探&#xff1a;为什么我们需要热力图&#xff1f; 当你训练了一个图像分类模型&#xff0c;准确率高达95%&#xff0c;但你真的了解它是如何做出判断的吗&#xff1f;我曾在项目中遇到过这样的尴尬&#xff1a;模型把一只坐在草地上的哈士奇误判为"狼&qu…...

Arduino驱动128x64 VFD显示屏:SPI像素回读与图形应用实战

1. 项目概述&#xff1a;为什么选择128x64图形VFD&#xff1f;如果你玩过各种OLED、LCD或者TFT屏幕&#xff0c;可能会觉得显示技术已经足够成熟&#xff0c;亮度、对比度似乎都够用。但当你第一次点亮一块真空荧光显示屏时&#xff0c;那种独特的、带着一丝复古科技感的蓝色辉…...

构建团队技能仓库:从知识管理到可执行技能包的系统化实践

1. 项目概述&#xff1a;从“技能包”到高效能工具箱最近在梳理团队内部的技术资产时&#xff0c;我反复思考一个问题&#xff1a;如何让那些散落在个人电脑、项目文档和口头交流中的“隐性知识”和“高效技能”&#xff0c;变成一个团队可以随时取用、持续进化的公共资产&…...

我给了智能体$100去赚钱,结果...

你看过那些演示。一个自主智能体启动&#xff0c;获得一个目标&#xff0c;然后——跳到两周后的 Twitter 帖子——它不知怎么地就在运营一个 Shopify 店铺、写通讯和炒币了。未来已来。AGI 即将降临。买课吧。 我想找出实际发生了什么。 所以我给了一个智能体 100 美元和一个…...

Claude API封装项目深度解析:从安全评估到自主构建代码助手

1. 项目概述与核心价值 最近在GitHub上看到一个挺有意思的项目&#xff0c;叫 ashish200729/claude-code-source-code 。光看这个标题&#xff0c;很多开发者朋友可能会心头一热&#xff0c;以为这是某个AI模型的源代码被开源了。但作为一个在开源社区混迹多年的老码农&…...