需求11——解决字段无法清空的两个小bug

news2024/11/24 0:07:53

 

目录

背景

第一个小bug——问题阐述

第一个小bug——解决方案

第二个小bug——问题阐述

第二个小bug——解决方案

总结


背景

已经写了一个上午的文章了,写完这篇就可以去吃饭了。这也是这几个月的我写的最后一个小bug文章,把这篇文章写完就搞定了。

第一个小bug——问题阐述

具体情况是这样的:当用户在界面上清空“知会干系人”字段后,点击保存,系统并没有实际清空该字段。类似地,当用户清空“设备名称”字段后,保存操作也没有生效,提交后发现该字段依然保留了之前的内容。

因此,我们的目标是确保在用户清空“知会干系人”和“设备名称”字段后,保存操作能够正确生效,真正实现字段的清空。

第一个小bug——解决方案

我们先来研究一下“知会干系人”无法清空的问题:首先找到更新“知会干系人”的接口,并查看其更新逻辑。

此时,我们再次检查系统是否能够清空字段,结果发现可以成功清空。

这个小问题已经解决了。

第二个小bug——问题阐述

接下来,我们来看下一个小问题。

然后我重新查看了一下作业标准,发现它并没有更新。

第二个小bug——解决方案

这时,我们应该检查一下后端的 PUT 接口,看看工作内容及标准是否已经更新到数据库中。

可以看到,PUT 接口的负载是没有问题的。因为设备名称是根据 deviceId 来查询的,按理说我把设备名称清空后,deviceId 应该为 null。从负载上看,确实如此。然而,当我们查看数据库时,发现数据库并没有更新。这意味着 PUT 接口可能存在问题。

我们进入这个接口,查看它是如何将信息更新到数据库中的。

也就是说,这个接口的更新操作使用的是 saveOrUpdateBatch 方法。然而,在使用 MyBatis-Plus 生成的 saveOrUpdate 方法时,有些字段需要更新为空值。但 MyBatis-Plus 默认的策略是 NOT_NULL,即如果字段为空,则不会更新该字段。

这就是为什么数据库中的 deviceId 无法更新为 null,因为在更新时 deviceId 为 null,这会导致 saveOrUpdate 方法忽略该字段的更新。

然后我上网查了一下如何让这个字段更新为 null,结果发现可以这样做:在 deviceId 字段上使用 @TableField 注解,并设置 updateStrategy 属性为 FieldStrategy.IGNORED

然后再去系统上测试一下看看效果,发现这个小 bug 已经被解决了,数据库中的 deviceId 字段也已经可以被更新为 null 了。

总结

这两个小 bug 虽然都是无法清空,但它们无法清空的原因并不相同。

  1. 知会干系人无法清空

    • 原因:tshList[] 这个知会干系人数组没有值时,就不会执行更新知会干系人的操作。
  2. 设备名称无法被清空

    • 原因:在 MyBatis-Plus 中,如果使用了 saveOrUpdate 方法进行更新时,假如你想把某个字段更新为 null 是不可以的。该方法会自动忽略这种更新,只有非空值才会被更新。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2203421.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vue 数组变化侦测

变更方法 Vue 能够侦听响应式数组的变更方法&#xff0c;并在它们被调用时触发相关的更新。这些变更方法包括: push() pop() shift() unshift() splice() sort() reverse() <template><div><p>点击按钮为列表添加元素</p><button click"cli…

【浏览器】如何正确使用Microsoft Edge

1、清理主页广告 如今的Microsoft Edge 浏览器 主页太乱了&#xff0c;各种广告推送&#xff0c;点右上角⚙️设置&#xff0c;把快速链接、网站导航、信息提要、背景等全部关闭。这样你就能得到一个超级清爽的主页。 网站导航       关闭 …

Mybatis高级查询-一对一查询

表介绍和表关系说明 新建以下4张表 tb_user&#xff1a;用户表 tb_order&#xff1a;订单表 tb_item&#xff1a;商品表 tb_orderdetail&#xff1a;订单详情表 【表关系】 1.tb_user和 tb_order表关系tb_user 《》 tb_order&#xff1a;一对多&#xff0c; 一个人可以下多…

第 4 章 Spring IoC容器之BeanFactory

Spring 的 IoC 容器是一个提供 IoC 支持的轻量级容器&#xff0c;除了基本的 IoC 支持&#xff0c;它作为轻量级容器还提供了 IoC 之外的支持。 Spring 提供了两种容器类型&#xff1a;BeanFactory 和 ApplicationContext&#xff1a; BeanFactory&#xff0c;基础类型 IoC 容…

布隆过滤器(Bloom Filter)详解

一、引言 在处理大量数据的场景中&#xff0c;我们经常会遇到判断一个元素是否在某个集合中的问题。传统的方法可能是使用 HashMap 等集合将数据保存起来&#xff0c;然后进行比较确定&#xff0c;但在元素很多的情况下&#xff0c;这种方式会非常浪费空间&#xff0c;检索速度…

dayu_widgets-简介

前言: 越来越多的人开始使用python来做GUI程序&#xff0c;市面上却很少有好的UI控件。即使有也是走的商业收费协议&#xff0c;不敢使用&#xff0c;一个不小心就收到法律传票。 一、原始开源项目: 偶然在GitHub上发现了这个博主的开源项目。https://github.com/phenom-films…

Fiddler配合wireshark解密ssl

环境&#xff1a; win11&#xff08;wireshark&#xff09;--虚拟机win7&#xff08;Fiddler&#xff09;---虚拟机win7&#xff08;HTTPS站点&#xff09; 软件安装问题&#xff1a; 需要.net环境&#xff0c;NDP461-KB3102436-x86-x64-AllOS-ENU.exe。 安装fiddler后安装下…

Pytest测试用例生命周期管理-Fixture

1、Fixture 用法 Fixture 特点及优势 1&#xff64;命令灵活&#xff1a;对于 setup,teardown,可以不起这两个名字2&#xff64;数据共享&#xff1a;在 conftest.py 配置⾥写⽅法可以实现数据共享&#xff0c;不需要 import 导⼊。可以跨⽂件共享3&#xff64;scope 的层次及…

从FastBEV来学习如何做PTQ以及量化

0. 简介 对于深度学习而言&#xff0c;通过模型加速来嵌入进C是非常有意义的&#xff0c;因为本身训练出来的pt文件其实效率比较低下&#xff0c;在讲完BEVDET后&#xff0c;这里我们将以CUDA-FastBEV作为例子&#xff0c;来向读者展示如何去跑CUDA版本的Fast-BEV&#xff0c;…

动态规划算法-路径问题——LCR.166.珠宝的最高价值

1.题目解析 题目来源&#xff1a;LCR.166珠宝的最高价值 原名&#xff1a;剑指offer47.礼物的最大价值 测试用例 2.算法原理 1.状态表示 创建dp表&#xff0c;dp[i][j]表示从最左上角到该目标位置的最大礼物值&#xff0c;代表dp[i][j]的状态 2.状态转移方程 目标位置的最大礼物…

SOMEIP_ETS_178: Subscribe_using_wrong_SOMEIP_MessageID

测试目的&#xff1a; 验证DUT能够拒绝一个SOME/IP头部使用错误消息ID进行服务发现的SubscribeEventgroup消息&#xff0c;并以SubscribeEventgroupNAck作为响应。 描述 本测试用例旨在确保DUT遵循SOME/IP协议&#xff0c;当接收到一个使用错误消息ID的服务发现SubscribeEve…

【livox】雷达初始化成功,但没有点云(已解决)

设备&#xff1a; 一台orin&#xff08;arm&#xff09; 接网线&#xff0c;本地ip&#xff1a;192.168.1.6 livox雷达&#xff1a;HAP 雷达初始ip&#xff1a;192.168.1.100 实物如下图&#xff1a; 然后 安装 livox_SDK 和 驱动 livox_ros_driver2 参考 【Livox】安…

通信界的5G-A/F5G-A新技术,你知道多少?

2024年已经过去了一大半&#xff0c;风起云涌的AI浪潮&#xff0c;又发生了不小的变化。 一方面&#xff0c;AI大模型的复杂度不断提升&#xff0c;模型参数持续增加&#xff0c;智算集群的规模也随之增加。万卡级、十万卡级集群&#xff0c;已经逐渐成为训练标配。这对智算网络…

心觉:开发潜意识的详细流程和步骤是什么

Hi&#xff0c;我是心觉&#xff0c;与你一起玩转潜意识、脑波音乐和吸引力法则&#xff0c;轻松掌控自己的人生&#xff01; 挑战每日一省写作195/1000天 最近领教了一下潜意识的力量和吸引力法则 我想要一张可以放在榻榻米壁柜上的迷你型的电动升降桌&#xff0c;桌面60cm…

《花100块做个摸鱼小网站! 》第七篇—谁访问了我们的网站?

⭐️基础链接导航⭐️ 服务器 → ☁️ 阿里云活动地址 看样例 → &#x1f41f; 摸鱼小网站地址 学代码 → &#x1f4bb; 源码库地址 一、前言 大家好呀&#xff0c;我是summo&#xff0c;最近发生了些事情(被裁员了&#xff0c;在找工作中)导致断更了&#xff0c;非常抱歉。…

基于SpringBoot+Vue+Uniapp汽车保养系统小程序的设计与实现

详细视频演示 请联系我获取更详细的演示视频 项目运行截图 技术框架 后端采用SpringBoot框架 Spring Boot 是一个用于快速开发基于 Spring 框架的应用程序的开源框架。它采用约定大于配置的理念&#xff0c;提供了一套默认的配置&#xff0c;让开发者可以更专注于业务逻辑而…

写一个代码:打印100~200之间的素数

我们要输出100-200之间的素数&#xff0c;首先我们先得输出100-200之间的数字&#xff0c;一般用于遍历循环的数字要用到for循环&#xff0c;同时在输出的100~200之间的数字进行判断是不是素数&#xff0c;我们知道素数的判断条件在于当一个数字从1开始到自己本身的时候&#x…

Android Framework AMS(03)AMS关键类解读

该系列文章总纲链接&#xff1a;专题总纲目录 Android Framework 总纲 本章关键点总结 & 说明&#xff1a; 说明&#xff1a;本章节主要涉AMS的关键类及其设计理念的解读&#xff0c;主要关注图中下方AMS关键类解读部分即可。这么做的目的是为了后面章节分析AMS时更容易理解…

基于SpringBoot+Vue+Uniapp家具购物小程序的设计与实现

详细视频演示 请联系我获取更详细的演示视频 项目运行截图 技术框架 后端采用SpringBoot框架 Spring Boot 是一个用于快速开发基于 Spring 框架的应用程序的开源框架。它采用约定大于配置的理念&#xff0c;提供了一套默认的配置&#xff0c;让开发者可以更专注于业务逻辑而…

MySql外键约束

数据库约束 对储存数据的约束&#xff0c;确保储存数据的准确性 not null&#xff08;非空约束&#xff09; 该行不能不存储值&#xff0c;null也不能default 默认约束当没有插入值时&#xff0c;该列就默认插入default给的值unique 唯一约束这个行的数据是唯一的prim…