因为当时是跑定时任务去插入数据,大概是这样的

//简单的定时任务,30分钟执行一次

@Scheduled(cron = "0 0/30 * * * ?")

public void dealInsertUserInfo(){

userService.dealInsertUserInfo();

}

事后也没太注意它是否插入数据正常,直到第二天,有同事提出问题然后才发现表id自增到2000多了,数据一条都没有,尴尬!!!其实一般使用SpringBoot开发的都知道我们比较喜欢使用注解,一般会在service层加一个事务注解:@Transactional,毕竟可以根据不同的事务的隔离级别实现不同的功能,例如防止脏读、不可重复读以及幻读。但是事务失败则通过调用rollback()方法进行回滚,然后我的数据呢,就被它无情的吞掉了,然后我就shanlita

事务回滚必要条件

1.方法拦截——方法或者方法所在类被@Transactional注解

2.

异常——该方法的执行过程出现异常,事务管理器被触发,并对此做出处理

3.

指定异常——默认配置下,事务只会对Error与RuntimeException及其子类这些UNChecked异常,做出回滚。 一般的Exception这些Checked异常不会发生回滚(如果一般Exception想回滚要做出配置)

举个栗子:实现一般异常的回滚:

注解式:@Transactional(rollbackFor=Exception.class)

4.异常抛出——方法中出现的指定异常,只有在被事务管理器捕捉到以后,事务才会据此进行事务回滚,比如:

a.异常不捕捉,就会回滚

b.如果异常被try{}捕捉到,那么事务管理器就无法再捕捉异常,所以就无法做出反应,事务不回滚;(既catch(RuntimeException))

c.如果异常被try{}捕捉了,我们还可以在Catch(){}中throw new RuntimeException(),手动抛出运行时异常供事务管理器捕捉;(既catch(){ throw new RuntimeException(); })

d.手动回滚事务TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();

关闭自动事物回滚,使用@Rollback(false)关闭回滚。

————————————————

版权声明:本文为CSDN博主「ZBYTSL」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/ZBYTSL/article/details/102833922

mysql丢失一条事务_SpringBoot之MySQL数据的丢失的元凶--事务(转)相关推荐

  1. 【MySQL】一条查询语句在MySQL内部的执行过程

    我们几乎每天都在写SQL语句,当我们写了一条查询语句,会得到一个查询结果,但是它在MySQL内部是怎样的一个执行过程呢? mysql> select * from T where Id = 10 ...

  2. mysql取n条不重复_MySQL重复数据中限定操作n条

    对于一个表,有时可能里面有很多重复的条,比如: +-----------+---------+ | coupon_id | user_id | +-----------+---------+ | 8 ...

  3. mysql select from user_select user,host from mysql.user; 这条查询语句到达mysql 从开始到结束到底经历了什么...

    mysqld 程序运行原理 mysqld 程序结构 连接层:执行上调语句 首先要连接到数据库 连接层 1.提供链接协议(连接的方法) socket(方法1 本地连接) TCP/IP(方法2 远程连接) ...

  4. MySQL查询结果条数编号示例 mysql 查找结果中自动加序号列

    SELECT @row := @row + 1 as row, t.id FROM sgcorp_product t, (SELECT @row := 0) r where t.id not in(s ...

  5. 《MySQL技术》学习笔记——使用SQL管理数据

    MySQL技术内幕--使用SQL管理数据 使用SQL管理数据 服务器的SQL模式 MySQL的标识符语法和命名规则 SQL语句的大小写规则 字符集支持 指定字符集 确定可用字符集和当前设置 Unico ...

  6. springboot事务回滚源码_Spring Boot中的事务是如何实现的

    1. 概述 一直在用SpringBoot中的@Transactional来做事务管理,但是很少想过SpringBoot是如何实现事务管理的,今天从源码入手,看看@Transactional是如何实现事 ...

  7. 事务没提交的数据查的出来吗?_“金三银四”面试官:说说事务的ACID,什么是脏读、幻读?...

    一.事务 事务是数据库管理系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成.--摘自百科 在MySQL里,事务是在引擎层面实现,比如MyIsam不支持,InnoDB支持 面试清单(Java ...

  8. 缓解数据包丢失对WAN的影响是当务之急—Vecloud微云

    网络数据包是网络层的协议数据单元(PDU).我们所有人都有这样一个概念:通过像Internet这样的TCP / IP网络传输数据,需要将数据分解成包含相关应用程序数据和标头的小数据包(通常小于1500 ...

  9. springboot mysql 事务_springBoot(14):使用SQL关系型数据库-事务处理

    一.事务的四个特性(ACID) 原子性(Atomicity): 事务是一个原子操作,由一系列动作组成.事务的原子性确保动作要么全部完成,要么完全不起作用. 一致性(Consistency): 一旦事务 ...

最新文章

  1. 除法取模(比赛常用)
  2. 构建根文件系统启动(1)
  3. OpenGL实践系列之开篇: 坐标系
  4. php中单引号与双引号的区别
  5. 哲学家就餐问题linux源代码,Linux下实现哲学家就餐问题
  6. 怎样把本软件是否注册的标志加在程序里?(注:不想加在数据库里)
  7. mysql linux 客户端_MySQL—Linux查看客户端连接信息(连接数、进程等)
  8. [转帖]Linux修改时区
  9. ICLR'22 | 图机器学习最近都在研究什么?
  10. 用imspost制作catia后处理_为什么我推荐你用3D打印技术制造模具?
  11. centos7.4下的KVM虚拟机安装使用
  12. Kconfig使用介绍
  13. django mysql内存泄漏_Django ORM性能优化,数据存取优化
  14. NRF24L01-状态寄存器
  15. 【经验总结】小白挖洞十天经验分享
  16. 【​观察】 娃娃也能编程?微软“编程一小时”让你家娃也能变身编程达人
  17. html制作多媒体课件,多媒体课件设计与制作 教师课件制作平台
  18. 学计算机要选什么科,计算机要学什么科目
  19. Java 程序基本结构
  20. Henry捡钱 Java 动态规划

热门文章

  1. SQL Server Integration Services(SSIS)中的脚本任务调试
  2. 想入职阿里的Java开发者必看,阿里巴巴面试官实战经验分享!
  3. 学习NSURLSession(1)
  4. property内存管理策略
  5. Windows Server 2008 R2 主域控制器委派DNS到子域控控制器
  6. 总结开发Silverlight项目准则 [转]
  7. sqlCommang ADO.Net
  8. Android 自定义控件之圆形扩散View(DiffuseView)
  9. 团队作业8----第二次项目冲刺(beta阶段)5.20
  10. [BZOJ]2194: 快速傅立叶之二