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

这篇具有很好参考价值的文章主要介绍了【大坑】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。真相大白!
【大坑】MyBatisPlus使用updateById莫名将数据四舍五入了,MyBatisPlus,springboot,java

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的原理也不甚了解。如有大佬愿意解释更深层次的原因的话,在下洗耳恭听。文章来源地址https://www.toymoban.com/news/detail-807262.html

到了这里,关于【大坑】MyBatisPlus使用updateById莫名将数据四舍五入了的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SpringBoot项目整合MybatisPlus并使用SQLite作为数据库

    SQLite 是一个进程内库,它实现了 独立的、无服务器的、零配置 的事务性 SQL 数据库引擎。SQLite 没有单独的服务器进程。 SQLite直接读取和写入普通磁盘文件,就是一个完整的 SQL 数据库 , 包含多个表、索引、 触发器和视图包含在单个磁盘文件中 。 数据库文件格式是跨平台

    2024年01月21日
    浏览(50)
  • ES单机索引数据莫名其妙丢失

    背景:单机的ES,已有了大量的生产数据,莫名其妙隔了几天数据丢失,日志显示索引被删除。 原因:索引分片的原因。建立索引时,es默认会分配一个主分片,一个副分片,但按es规定主分片与副分片不应存在在一台服务器上,单机版的这种情况会被视为索引状态有问题,es会

    2024年02月14日
    浏览(48)
  • 【Python从入门到人工智能】16个必会的Python内置函数(4)——数据转换与计算 (详细语法参考+参数说明+具体示例) | 求和、四舍五入、幂运算的综合应用

      成长的标准就是,拒绝别人以后,没有任何的愧疚感。——萨特     🎯作者主页: 追光者♂🔥          🌸个人简介:   💖[1] 计算机专业硕士研究生💖   🌟[2] 2022年度博客之星人工智能领域TOP4🌟   🏅[3] 阿里云社区特邀专家博主🏅   🏆[4] CSDN-人工智能领域优质

    2024年02月15日
    浏览(74)
  • mysql数据库存数组类型数据,如何判断数组中是否包含某个值?使用mybatisplus查询。

    跟mybatisplus中.in()方法相反的函数 mybatisplus的in函数:查询的是数据库的某个属性的值是否在给定的集合中。这里我们讲的是一个值是否在数据库的某个属性数组中。 说明: 这是一张学生信息表,其中包含了学生曾经就读过的学校。现在我们要做的就是查询哪些学生就读过指

    2024年02月16日
    浏览(99)
  • springboot使用达梦数据库(DM8)整合MybatisPlus

    在idea中开发spring boot项目,用到的数据库是达梦数据库,想要使用 MybatisPlus 自动生成实体类和服务,并且通过 MybatisPlus 完成一些简单的数据库CRUD ps:这里的 MybatisPlus 版本必须要是3.0以上 2.1、pom ps:其中需要将达梦数据库的依赖添加到指定目录下,不然达梦的依赖无法生效

    2024年02月16日
    浏览(56)
  • Elasticsearch使用——结合MybatisPlus使用ES & es和MySQL数据一致性 & 结合RabbitMQ实现解耦

    本篇博客是一篇elasticsearch的使用案例,包括结合MybatisPlus使用ES,如何保证MySQL和es的数据一致性,另外使用了RabbitMQ进行解耦,自定义了发消息的方法。 其他相关的Elasticsearch的文章列表如下: Elasticsearch的Docker版本的安装和参数设置 端口开放和浏览器访问 Elasticsearch的可视化

    2024年02月08日
    浏览(46)
  • 单个数据源与多数据源使用mybatisplus分页插件total一直为0的解决办法

    1. 注册分页插件( 不注册分页插件total也是0) : 注意:如果是 单数据源 此时分页插件能正常使用,而 如果是多数据源 ,那么就必须添加以下内容,否则分页时查询总数total还是0 2. 多数据源定义: 重点就是以下两行:  Interceptor[] interceptors = new Interceptor[] { mybatisPlusInterc

    2024年04月25日
    浏览(37)
  • MybatisPlus使用Left Join...on...一对多多表联查和Ipage分页返回数据问题

    问题: 一对多关系表使用MybatisPlus的Ipage进行分页查询,会先执行联表查询sql语句,然后进行分页。  像图中联表查询一对多关系,会有多条重复数据,使用Ipage分页会将这10条数据返回到xml中resultMap绑定的type。造成一页展示的数据少于10条。 针对这种我们采用子查询的方式解

    2024年02月13日
    浏览(40)
  • 使用 fastjson 又又又翻车了,莫名其妙多了属性。。

    有一位同事说使用 fastjson 进行 JSON 序列化存储到数据库后,发现 JSON 字符串“莫名其妙地”多了一些属性!帮看了下代码,看到基本类型的布尔类型以 is 开头的属性,再看到 fastjson ,就有点想笑。 定义 MyClass 编写测试代码: 结果: 我们发现多了一个 active 属性,少了一个

    2024年02月16日
    浏览(44)
  • 使用vscode写golang的一些大坑(单元测试、goimports、接口实现)

    之前使用的是goland,定位代码、代码补全、代码测试、git版本管理一应俱全,使用方便,但是奈何内存占用太大,平时使用的的项目又比较多,所以决定转战vscode。 在使用vscode开发的过程,目前碰到了三个问题: 查看源码时,无法根据接口定义查找到所有的实现。 goland的

    2024年02月06日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包