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

问题描述

我目前在为本地的一所高中开发一个成绩分析的网站,后端使用的是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的原理也不甚了解。如有大佬愿意解释更深层次的原因的话,在下洗耳恭听。

相关推荐

  1. MyBatisPlusMyBatisPlus介绍与使用

    2024-01-20 08:26:05       31 阅读
  2. MyBatisPlus---使用limit查询

    2024-01-20 08:26:05       58 阅读
  3. mybatisplus使用示例】

    2024-01-20 08:26:05       58 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-20 08:26:05       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-20 08:26:05       106 阅读
  3. 在Django里面运行非项目文件

    2024-01-20 08:26:05       87 阅读
  4. Python语言-面向对象

    2024-01-20 08:26:05       96 阅读

热门阅读

  1. Angular: DOCUMENT

    2024-01-20 08:26:05       43 阅读
  2. 网页全屏html视频动画效果

    2024-01-20 08:26:05       51 阅读
  3. NGINX配置负载均衡算法

    2024-01-20 08:26:05       57 阅读
  4. leetcode课程表-207-拓扑排序

    2024-01-20 08:26:05       53 阅读
  5. 组件开发遇到的问题(vue的问题)

    2024-01-20 08:26:05       50 阅读
  6. [python]变量与常量

    2024-01-20 08:26:05       55 阅读
  7. CopyOnWriteArrayList介绍

    2024-01-20 08:26:05       47 阅读
  8. Flink的两阶段提交是什么

    2024-01-20 08:26:05       51 阅读
  9. 自己配置vue项目

    2024-01-20 08:26:05       53 阅读
  10. Spring AOP学习

    2024-01-20 08:26:05       39 阅读
  11. springboot如何创建全局线程池

    2024-01-20 08:26:05       53 阅读
  12. python入门,文件的编码,读取,写入,追加

    2024-01-20 08:26:05       60 阅读
  13. django 中group by 以及sum count

    2024-01-20 08:26:05       58 阅读
  14. Webpack5入门到原理13:开发服务器&自动化

    2024-01-20 08:26:05       60 阅读
  15. Linux 常用命令分享与示例

    2024-01-20 08:26:05       34 阅读