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

需求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 虽然都是无法清空,但它们无法清空的原因并不相同。

  1. 知会干系人无法清空

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

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

相关文章:

  • mysql学习教程,从入门到精通,SQL 创建索引(CREATE INDEX 语句)(35)
  • Pikachu-Cross-Site Scripting-DOM型xss_x
  • Pikachu-Cross-Site Scripting-xss之htmlspecialchars
  • CSS基础中padding详解
  • OpenGL笔记十九之相机系统
  • P-Tuning v2:一种普遍有效的提示调整方法
  • 微信小程序启动不起来,报错凡是以~/包名/*.js路径的文件,都找不到,试过网上一切方法,最终居然这么解决的,【避坑】命运的齿轮开始转动
  • C#串口温度读取
  • 2.5 Spring Boot整合Spring MVC框架
  • Java 归并排序
  • 20241008深度学习动手篇
  • 对序列化反序列化在项目中的使用优化
  • 查看 git log的过程中看到 :说明日志输出可能超出屏幕大小,系统进入了分页模式
  • Linux--信号量详解
  • 【重学 MySQL】五十一、更新和删除数据
  • Web3与人工智能的交叉应用探索
  • 【springboot9736】基于springboot+vue的逍遥大药房管理系统
  • 四.网络层(上)
  • Leecode热题100-56.合并区间
  • 安全帽未佩戴预警系统 劳保防护用品穿戴监测系统 YOLO
  • 【python机器学习】线性回归 拟合 欠拟合与过拟合 以及波士顿房价预估案例
  • IT招聘乱象的全面分析
  • 一入递归深似海,算法之美无止境
  • 进程的状态的理解(概念+Linux)
  • Apache Linkis + OceanBase:如何提升数据分析效率
  • Day01-postgresql数据库基础入门培训
  • 打卡第四天 P1081 [NOIP2012 提高组] 开车旅行
  • Jenkins Pipline流水线
  • 鸿蒙harmonyos next flutter混合开发之开发FFI plugin
  • oracle数据库安装和配置