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

//简单的定时任务,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. PHP如何调取vlc播放rtsp,H5+VLC播放RTSP视频流
  2. 如何删除UITableView中的空单元格? [重复]
  3. 【Linux 内核 内存管理】Linux 内核堆内存管理 ① ( 堆内存管理 | 内存描述符 mm_struct 结构体 | mm_struct 结构体中的 start_brk、brk 成员 )
  4. QList 列表指针的操作 释放
  5. uni map 实时记录轨迹_北斗GPS汽车行车记录仪,部标808商用轿车专用
  6. karma如何与测试框架合作2之webpack
  7. LeetCode - 44. Wildcard Matching
  8. Ubuntu18.04之星际译王及辞典
  9. VMwear安装Centos7超详细过程
  10. 全国计算机二级c语言题库,计算机二级c语言题库及答案
  11. 收集的一些discuz插件常用插件。
  12. 数字图像处理笔记——Snakes算法、活动轮廓以及水平集(Snakes, active contours, and level sets)
  13. 同比和与环比的计算公式
  14. 个人发展战略基础理论
  15. 思科PC远程控制交换机和路由器
  16. 冒险岛V79个人用私服搭建回顾
  17. 安检x光机原理计算机实现,安检X光机组成及工作原理(图文)
  18. LPC845-BRK开发板开箱
  19. 腾讯通RTX无法正常拉取组织架构的解决方法
  20. InstallShield 2015 打包vs2015编辑的.net程序 生成setup单文件

热门文章

  1. mysql sql归类_带有归类SQL强制转换SQL Server归类介绍
  2. SQL Server事务日志采访问题
  3. flow使用_使用Microsoft Flow进行文本分析
  4. python脚本打包成exe可执行文件
  5. sklearn学习5-----模型评估(1) 分类度量
  6. Flask11 Session、CSRF、注销session、利用端点自动跳转
  7. 【Source Insight 】之marco学习笔记2
  8. java里的日期时间
  9. urlconnection.connect()和url.openconnection()的区别
  10. Windows phone7 动态添加控件