• 首页
  • 前端技术
  • 编程语言
  • 人工智能
  • 运维知识
  • 资源下载
  • 常用小工具
  • 技术问答

mybatis先修改再查询,查询到是修改前的数据(事务)

2021-11-29
此文转载自:https://blog.csdn.net/qq_38306425/article/details/110054829#commentBox
背景

昨天在做项目中,有一个业务是需要先修改状态,再查询成功状态的条目,在测试中发现,一共十条数据,其中三条修改为成功状态,但是再次查询,发现三条数据为初始状态,说明没有查询到修改后的数据。

排查

这种问题一般和事务的隔离机制有关,mysql默认事务隔离级别是可重复读,事务隔离机制是作用在两个或多个事务上的,单个事务肯定是不存在隔离机制的,首先排查代码有没有开启新的事务

结果

排查中发现,其中一个方法,是复制过来的,将@Transactional注解一块复制过来的,导致修改操作开启了一个新的事务,查询操作和修改操作不在同一个事务中,而mysql默认隔离级别是可重复读,所以查询到的结果为修改前的数据。

数据库隔离级别相关文章

事务介绍及Mysql、jdbc、Spring实现事务

相关文章:

猜你喜欢
相关资源
相似解决方案
热门标签
Java Python linux javascript Mysql C# Docker 算法 前端 SpringBoot Redis Vue spring 设计模式 .net core .net kubernetes c++ 数据库 数据结构 大数据 js 机器学习 微服务 Android Go 程序员 面试 JVM ASP.net core 云原生 人工智能 后端 PHP git CSS golang k8s Nginx Django mybatis 深度学习 多线程 React 架构 devops 爬虫 云计算 Spring Boot LeetCode
By © 2026 likecs 版权所有,
本站所有数据收集于网络如有侵犯到您的权益请联系 进行下架处理1。
粤ICP备22038628号Powered By WordPress