需求11——解决字段无法清空的两个小bug
目录
背景
第一个小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 虽然都是无法清空,但它们无法清空的原因并不相同。
-
知会干系人无法清空:
- 原因:
tshList[]这个知会干系人数组没有值时,就不会执行更新知会干系人的操作。
- 原因:
-
设备名称无法被清空:
- 原因:在 MyBatis-Plus 中,如果使用了
saveOrUpdate方法进行更新时,假如你想把某个字段更新为null是不可以的。该方法会自动忽略这种更新,只有非空值才会被更新。
- 原因:在 MyBatis-Plus 中,如果使用了
相关文章:
需求11——解决字段无法清空的两个小bug
目录 背景 第一个小bug——问题阐述 第一个小bug——解决方案 第二个小bug——问题阐述 第二个小bug——解决方案 总结 背景 已经写了一个上午的文章了,写完这篇就可以去吃饭了。这也是这几个月的我写的最后一个小bug文章,把这篇文章写完就搞定了…...
mysql学习教程,从入门到精通,SQL 创建索引(CREATE INDEX 语句)(35)
1、SQL 创建索引(CREATE INDEX 语句) 在SQL中,创建索引(CREATE INDEX)是一种用于提高数据库查询性能的方法。索引类似于书的目录,通过它可以更快地定位到表中的特定行。以下是一个创建索引的示例,以及对其各部分的解释…...
Pikachu-Cross-Site Scripting-DOM型xss_x
查看代码,输入的内容,通过get请求方式,用text 参数带过去; 获取text内容,赋值给xss 然后拼接到 dom 里;构造payload的关键语句: <a href"xss">就让往事都随风,都随风吧</a&…...
Pikachu-Cross-Site Scripting-xss之htmlspecialchars
首先输入各种字符 查看页面元素,可以看到这里对一些符号做了转换,但是 单引号等几个符号没处理; 从代码上看;使用单引号做闭合; 构造payload a onclickalert(11) 提交,得到xss攻击...
CSS基础中padding详解
文章目录 CSS基础中padding详解一、引言二、Padding基础1、Padding属性1.1、Padding的四个方向 2、Padding的值类型3、代码示例 三、Padding简写方法1、简写顺序2、简写规则3、代码示例 四、Padding对元素大小的影响1、解决方案1.1、Box-sizing属性1.2、计算实际宽度 五、总结 …...
OpenGL笔记十九之相机系统
OpenGL笔记十九之相机系统 —— 2024-10-02 晚上 bilibili赵新政老师的教程看后笔记 code review! 文章目录 OpenGL笔记十九之相机系统1.运行1.1.游戏相机1.2.轨迹球相机 2.游戏相机与轨迹球相机切换3.博主笔记本要运行需要更改的文件更改1:28_OpenGL_CameraSystem/applicat…...
P-Tuning v2:一种普遍有效的提示调整方法
人工智能咨询培训老师叶梓 转载标明出处 预训练语言模型通过微调(fine-tuning)来适应特定任务虽然效果显著,但存在训练成本高、参数存储量大等问题。为了解决这些问题,清华大学的研究者们提出了一种名为P-Tuning v2的提示调整&am…...
微信小程序启动不起来,报错凡是以~/包名/*.js路径的文件,都找不到,试过网上一切方法,最终居然这么解决的,【避坑】命运的齿轮开始转动
app.json "resolveAlias": {"~/*": "/*"},文件代码也没有问题,网上的方法试过来了,大模型AI也问过遍,熬夜到凌晨2点半,最不可思议的是居然是因为微信开发者工具版本的问题,我真的是笑死…...
C#串口温度读取
背景:每天学点,坚持 要安装好虚拟串口和modbus poll,方便调试(相关资源在文末,也可以私信找我要) 传感器部分使用的是达林科技的DL11B-MC-D1,当时42软妹币买的(官网上面有这个传感…...
2.5 Spring Boot整合Spring MVC框架
今天,我将向大家介绍如何在Spring Boot中整合Spring MVC框架,并展示如何创建和测试控制层(Controller)。 首先,让我们简要回顾一下Spring MVC。Spring MVC是一个基于Servlet的MVC框架,它简单、侵入性小&am…...
Java 归并排序
归并排序(Merge Sort)是一种基于分治法的排序算法。它将一个大数组分成两个较小的子数组,分别对每个子数组进行排序,然后再将这两个已排序的子数组合并成一个完整的已排序数组。归并排序的时间复杂度为 O(n log n),其中…...
20241008深度学习动手篇
文章目录 1.如何写一个神经网络进行训练?1.1创建一个子类,搭建你需要的神经网络结构1.2 加载数据集1.3 自定义一些指标评估函数1.4训练1.5 结果展示 2.参考文献 1.如何写一个神经网络进行训练? 1.1创建一个子类,搭建你需要的神经网络结构 # File: 241008LeNet.py # Author:…...
对序列化反序列化在项目中的使用优化
文章目录 序列化是什么?常见的序列化协议使用序列化反序列化序列化List反序列化List 查看源码,分析不足进行改善 序列化是什么? 如果我们需要持久化 Java 对象比如将 Java 对象保存在文件中,或者在网络传输 Java 对象,…...
查看 git log的过程中看到 :说明日志输出可能超出屏幕大小,系统进入了分页模式
在命令行提示符中,通常 : 表示系统等待进一步的输入。如果你在查看 git log 的过程中看到 :,说明日志输出可能超出屏幕大小,系统进入了分页模式,默认使用 less 命令查看内容。 此时你可以: 按 q 退出日志查看。按 En…...
Linux--信号量详解
目录 一、信号量 1、信号量相关函数 2、多线程环形队列生产消费模型 3、实现代码 信号量是将整体的资源分割成多份使用 信号量本质是对资源的预定机制 一、信号量 1、信号量相关函数 创建信号量: sem_init: int sem_init(sem_t *sem, int pshared, unsigned int value); …...
【重学 MySQL】五十一、更新和删除数据
【重学 MySQL】五十一、更新和删除数据 更新数据删除数据注意事项 在MySQL中,更新和删除数据是数据库管理的基本操作。 更新数据 为了更新(修改)表中的数据,可使用UPDATE语句。UPDATE语句的基本语法如下: UPDATE ta…...
Web3与人工智能的交叉应用探索
随着数字技术的发展,Web3与人工智能(AI)之间的结合正逐渐成为一个重要的研究领域。Web3技术旨在实现更加去中心化和透明的互联网,而人工智能则在数据分析、自动化决策和增强人类能力方面展示了巨大的潜力。 1. 去中心化数据管理与…...
【springboot9736】基于springboot+vue的逍遥大药房管理系统
作者主页:Java码库 主营内容:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app等设计与开发。 收藏点赞不迷路 关注作者有好处 文末获取源码 项目描述 伴随着全球信息化发展,行行业业都与计算机技…...
四.网络层(上)
目录 4.1网络层功能概述 4.2 SDN基本概念 4.3 路由算法与路由协议 4.3.1什么是路由协议? 4.3.2什么是路由算法? 4.3.3路由算法分类 (1)静态路由算法 (2)动态路由算法 ①全局性 OSPF协议与链路状态算法 ②分散性 RIP协议与距离向量算法 4.3.…...
Leecode热题100-56.合并区间
以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。 示例 1: 输入:intervals [[1,3…...
智慧医疗能源事业线深度画像分析(上)
引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...
脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)
一、数据处理与分析实战 (一)实时滤波与参数调整 基础滤波操作 60Hz 工频滤波:勾选界面右侧 “60Hz” 复选框,可有效抑制电网干扰(适用于北美地区,欧洲用户可调整为 50Hz)。 平滑处理&…...
微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】
微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来,Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...
【Linux】C语言执行shell指令
在C语言中执行Shell指令 在C语言中,有几种方法可以执行Shell指令: 1. 使用system()函数 这是最简单的方法,包含在stdlib.h头文件中: #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...
ffmpeg(四):滤镜命令
FFmpeg 的滤镜命令是用于音视频处理中的强大工具,可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下: ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜: ffmpeg…...
全志A40i android7.1 调试信息打印串口由uart0改为uart3
一,概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本:2014.07; Kernel版本:Linux-3.10; 二,Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01),并让boo…...
Android第十三次面试总结(四大 组件基础)
Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成,用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机: onCreate() 调用时机:Activity 首次创建时调用。…...
Java + Spring Boot + Mybatis 实现批量插入
在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法:使用 MyBatis 的 <foreach> 标签和批处理模式(ExecutorType.BATCH)。 方法一:使用 XML 的 <foreach> 标签ÿ…...
离线语音识别方案分析
随着人工智能技术的不断发展,语音识别技术也得到了广泛的应用,从智能家居到车载系统,语音识别正在改变我们与设备的交互方式。尤其是离线语音识别,由于其在没有网络连接的情况下仍然能提供稳定、准确的语音处理能力,广…...
c# 局部函数 定义、功能与示例
C# 局部函数:定义、功能与示例 1. 定义与功能 局部函数(Local Function)是嵌套在另一个方法内部的私有方法,仅在包含它的方法内可见。 • 作用:封装仅用于当前方法的逻辑,避免污染类作用域,提升…...
