【大坑】MyBatisPlus使用updateById莫名将数据四舍五入了

news2024/11/15 4:59:16

问题描述

我目前在为本地的一所高中开发一个成绩分析的网站,后端使用的是SpringBoot+MyBatisPlus,业务逻辑是用户在前端上传EXCEL文件,后端从文件中读取成绩存到数据库用于分析。但是奇怪的是:在后端,进入数据库之前的成绩数据是64.5,到数据库之后就变成了65.0
代码如下:

System.out.println("插入到数据库的subjectScore: " + subjectScore);
if (subjectScore1 != null) {
	subjectScoreDao.updateById(subjectScore);
}
else subjectScoreDao.insert(subjectScore);

从现象上分析,肯定不是数据库字段的精度问题,因为数据库中的数据已经出现小数了。

分析

代码中的subjectScore1 是判断数据库中是否有相同id的数据,如果subjectScore1 不为空,则有。因为我的数据库在之前就已经导入过数据了,所以一直执行的是那个updateById方法。
抓耳挠腮想了半天,将数据库中的数据删除了之后在重新导入,发现数据又正常了,是64.5。
这就说明insert方法没问题,一更新之后就又变成了65.0。真相大白!
在这里插入图片描述

updateById就是罪魁祸首!

解决

将代码换成下面的

System.out.println("插入到数据库的subjectScore: " + subjectScore);
if (subjectScore1 != null) {
	LambdaQueryWrapper<SubjectScore> slqw = new LambdaQueryWrapper<>();
	slqw.eq(SubjectScore::getScId,subjectScore1.getScId());
	subjectScoreDao.update(subjectScore,slqw);
}
else subjectScoreDao.insert(subjectScore);

也就是换成update方法。解决
我估计改成将原数据删除了之后在insert插入也行。

以后反正我是不会在使用updateById这个玩意了。(虽然可能是我自己的问题)。


笔者见识粗浅,对MyBatisPlus和SpringBoot的原理也不甚了解。如有大佬愿意解释更深层次的原因的话,在下洗耳恭听。

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

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

相关文章

Flink实时数仓同步:拉链表实战详解

一、背景 在大数据领域&#xff0c;业务数据通常最初存储在关系型数据库&#xff0c;例如MySQL。然而&#xff0c;为了满足日常分析和报表等需求&#xff0c;大数据平台会采用多种不同的存储方式来容纳这些业务数据。这些存储方式包括离线仓库、实时仓库等&#xff0c;根据不同…

75.网游逆向分析与插件开发-背包的获取-背包结构与指针的逆向分析

内容参考于&#xff1a;易道云信息技术研究院VIP课 上一个内容&#xff1a;物品名称与物品编号的映射关系分析-CSDN博客 通过这个内容以及可以通过物品的id得到一个名字&#xff0c;知道了它的算法&#xff0c;它的算法自己封装好了&#xff0c;我们直接用就好&#xff0c;接…

如何在CentOS 7 中基于OpenSSL 1.0 搭建Python 3.0 环境

1、下载 通过https://www.python.org/ftp/python/下载Python安装包&#xff0c;这里下载Python-3.10.9.tgz&#xff1b; 2、上传 借助MobaXterm等工具将Python安装包上传至/opt目录&#xff1b; 3、解压 将JDK压缩文件解压至/opt目录&#xff1a;tar -xvf /opt/Python-3.1…

从 Context 看 Go 设计模式:接口、封装和并发控制

文章目录 Context 的基本结构Context 的实现和传递机制为什么 Context 不直接传递指针案例&#xff1a;DataStore结论 在 Go 语言中&#xff0c; context 包是并发编程的核心&#xff0c;用于传递取消信号和请求范围的值。但其传值机制&#xff0c;特别是为什么不通过指针传递…

Qt 5.15.2 (MSVC 2019)编译 QWT 6.2.0 : 编译MingW或MSVC遇到的坑

MingW下编译QWt 6.2.0 下载qwt最新版本&#xff0c;用git工具 git clone下载源码 git clone https://git.code.sf.net/p/qwt/git qwt-git 或者使用我下载的 qwt 2.6.0 链接&#xff1a;https://pan.baidu.com/s/1KZI-L10N90TJobeqqPYBqw?pwdpq1o 提取码&#xff1a;pq1o 下载…

2024最新Java高频面试题总结(附答案PDF)春招面试必备!

《Java面试全解析》1000道 面试题大全详解 本人是 2009 年参加编程工作的&#xff0c;一路上在技术公司摸爬滚打&#xff0c;前几年一直在上海&#xff0c;待过的公司有 360 和游久游戏&#xff0c;因为自己家庭的原因&#xff0c;放弃了阿里钉钉团队的 offer 回到了西安。 从…

个人实现的QT拼图游戏(开源),QT拖拽事件详解

文章目录 效果图引言玩法 拖拽概念基本概念如何在Qt中使用拖放注意事项 游戏关键问题总结 效果图 ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/c6dd66befd314442adf07e1dec0d550c.png 引言 在学习QT demo时&#xff0c;发现有一个拼图demo&#xff0c;介绍拖…

小白进阶之字符串处理

#include <cstdio> #include <cstring> int main() {char str[105];int count0,len0;scanf("%s",str);//输入字符lenstrlen(str);//求字符长for(int i0;i<len;i){if(str[i]A)//匹配计数count;}printf("%d",count); }#include <cstdio>…

【算法实验5】

实验5-1 最短下降路径问题 【样例输入】 3 2 1 3 6 5 4 7 8 9 【样例输出】 13 #include<bits/stdc.h> using namespace std; const int N 105; int n; int g[N][N]; int f[N][N]; int res 1e95; int main() {cin>>n;for(int i 1; i < n; i )for(int …

2.C语言——控制语句

控制语句 1.分支语句/判断语句if 语句if...else 语句if...else if...else语句 switch语句 2.循环语句 while 语句 do...while 语句 for 语句 3.转向语句 break continue go to 1.分支语句/判断语句 if 语句 if(boolean_expression) { /* 如果布尔表达式为真将执行的语句 */ } …

禅道-项目从0到1的过程18开源版本使用

目录 一、禅道的下载安装12版本开源版 1.1、禅道 在计算机网络行业&#xff0c;禅道是一种开源的项目管理软件。它提供了敏捷开发、测试管理、bug跟踪、需求管理、团队协作等功能&#xff0c;适用于敏捷开发团队和软件开发项目管理。禅道软件旨在帮助团队更好地管理项目、提高…

读元宇宙改变一切笔记10_支付方式

1. 元宇宙中的经济 1.1. 元宇宙被设想为一个平行世界&#xff0c;人们将在那里花大量的时间工作和生活 1.1.1. 元宇宙的实现程度部分取决于它是否建立在一个繁荣的经济体系之上 1.2. 元宇宙中的经济将大体遵循现实世界的经济模式 1.2.1. 激烈的竞争、大量营利性企业的存在、…

yolov8的目标检测、实例分割、关节点估计的原理解析

1 YOLO时间线 这里简单列下yolo的发展时间线&#xff0c;对每个版本的提出有个时间概念。 2 yolov8 的简介 工程链接&#xff1a;https://github.com/ultralytics/ultralytics 2.1 yolov8的特点 采用了anchor free方式&#xff0c;去除了先验设置可能不佳带来的影响借鉴General…

树莓派也可以部署基于YOLO的目标检测

YOLO目标检测结果 在本文的第一部分中&#xff0c;我测试了YOLO&#xff08;You Only Look Once&#xff09;这一流行的目标检测库的“复古”版本。只使用OpenCV运行深度学习模型&#xff0c;而不使用“沉重”的框架如PyTorch或Keras&#xff0c;对于低功耗设备来说是有前途的&…

Python | 六、哈希表 Hash Table(列表、集合、映射)

哈希表基础 哈希表是一类数据结构&#xff08;哈希表包含数组、集合和映射&#xff0c;和前两篇文章叙述的字符串、链表平级&#xff09;哈希表概念&#xff1a;类似于Python里的字典类型&#xff0c;哈希表把关键码key值通过哈希函数来和哈希表上的索引对应起来&#xff0c;之…

DNA序列修正*

题目 import java.util.HashMap; import java.util.Map; import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);int n sc.nextInt();sc.nextLine();char[] sq1 sc.next().toCharArray();sc.nextLine(…

ROS第 10 课 服务数据的自定义与使用

文章目录 第 10 课 服务数据的自定义与使用1.自定义服务数据2.服务数据的使用2.1 创建服务器和客户端代码2.2 运行服务器和客户端节点 第 10 课 服务数据的自定义与使用 1.自定义服务数据 注意&#xff1a;在自定义服务数据之前&#xff0c;需要先创建工作空间和功能包&#x…

【Linux第二课-权限】操作系统、Linux用户、Linux权限、Linux文件类型、粘滞位

目录 操作系统shell外壳为什么有shell外壳shell外壳是什么shell外壳工作原理 Linux用户root用户与非root用户root用户与普通用户的切换普通用户 --> root用户root用户 --> 普通用户普通用户 --> 普通用户对一条指令提升为root权限进行执行 Linux权限Linux中的权限角色…

STM32(--001) Win10、Win11 上的驱动安装说明

一、USB线插到 CMSIS-DAP 接口上&#xff0c;将自动识别到两个设备 ① CMSIS-DAP&#xff1a;用于烧录代码、在线硬件仿真; 在Keil里烧录&#xff0c;无需通过FlyMCU; ② USB转TTL&#xff1a;用于开发板与电脑间串口通信 &#xff0c;即USART1, TX-PA9、RX-PA10; 接口备注&a…

Java 流程控制 - 分支、循环

顺序控制 程序从上到下逐行执行&#xff0c;中间没有任何判断和跳转。 public class Test{//正确形式int a 1;int b a;// 错误形式int c d 1;int d 2; }块作用域 块&#xff08;即复合语句&#xff09;是指由一对大括号括起来的若干条简单的 Java 语句。块确定了变量的…