mybatis mysql回滚_spring boot 使用 mybatis 开启事务回滚 的总结

本文详细介绍了在Spring Boot中使用MyBatis如何开启事务回滚,探讨了事务的四大特性,并通过实例说明了在不同情况下如何进行事务控制。包括异常处理、父子方法间的事务影响以及如何在捕获异常后仍能触发事务回滚。
摘要由CSDN通过智能技术生成

1.前言

以前没有使用mybatis,可以关闭自动提交,然后做sql操作,对操作进行catch捕获异常,

如果没有异常则commit 提交 ,有异常则 rollback 回滚,新增的数据则删除 ,修改的数据则修改回去,删除的则新增,

这就是事务操作。

事务有四大特性

(1)原子性:要么全部执行成功,要么不执行。

(2)一致性:事务执行的结果,必须使数据库从一个一致性状态变到另一个一致性状态。

(3)隔离性:并发操作同一个表时数据库会开启多个事务,多个事务之间相互隔离。

(4)持久性:当事务确认完成后,对数据的改变是永久性的。

那么mybatis怎么具体开启事务?

spring boot 开启其实很简单,使用注解开启即可,但是需要注意,需要触发非检查异常才会做事务回滚操作,【Exception 是检查异常】

但是如果使用try catch 捕获异常,也不会触发异常,因为异常被 吃下去了,做了服务降级操作,事务以为没有异常发生,因此不会触发回滚操作。

如果非要触发事务回滚,则需要在事务注解指定会触发事务回滚操作的异常类型,如果需要自定义抛出异常后反馈前端的数据,那么需要自定义异常,

自定义异常将会在下一随笔详细讲解。

经过测试总结:

(1)父级方法开启事务 @Transactional,父级发生异常,不仅父级会回滚,他调用的所有子方法都会回滚,也就是说,回滚事务父级可以影响所有子级.

(2)如果子级开了事务,父级没有开,发生异常,则仅仅让子级方法回滚,如果父级也开了事务,那么所有的子级将会和父级一起回滚。

2.操作

(1)提前配置好spring boot + mybatis

目录结构

b612dace34f4f408973d6d75cf29037b.png

红色箭头的文件是必要的,

(2)导入依赖包

8049c88eb9da4cff90ba661d3a21a546.png

完整源码

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

4.0.0

cen.cloud

cen-mycloud

0.0.1-SNAPSHOT

com.example

ra

在JavaMyBatis是一种流行的持久化框架,它提供了一种简单且灵活的方式来进行数据库操作。MySQL是一种常用的关系型数据库管理系统,它支持事务处理。 事务是一组互相关联的操作,它们被视为一个单独的工作单元。事务具有以下四个特性,通常称为ACID特性: 1. 原子性(Atomicity):事务的所有操作要么全部成功执行,要么全部回滚。如果出现任何错误或异常,事务回滚到初始状态,之前的操作将会回滚。 2. 一致性(Consistency):事务开始和结束时,数据库应该保持一致状态。这意味着数据在事务执行之前和之后应该满足一定的约束和完整性规则。 3. 隔离性(Isolation):事务之间应该是相互隔离的,一个事务的操作不会影响其他事务。这样可以确保事务在并发环境下保持数据的一致性。 4. 持久性(Durability):一旦事务提交成功,对数据所做的更改应该永久保存在数据库,即使发生系统故障或电源故障。 在Java使用MyBatisMySQL进行事务回滚,我们可以采取以下步骤: 1. 首先,我们需要在MyBatis的配置文件启用事务管理器。可以使用JDBC的事务管理器,也可以使用Spring事务管理器等。 2. 在需要进行事务管理的方法上使用注解或XML配置事务。注解方式可以使用`@Transactional`注解,XML配置方式可以使用`<transaction>`标签。 3. 在事务管理的方法,我们可以使用`try-catch`块来捕获可能发生的异常,如果出现异常,则可以调用`TransactionManager`的`rollback`方法来回滚事务。 4. 如果所有操作都执行成功,我们可以调用`TransactionManager`的`commit`方法来提交事务,将更改持久化保存到数据库。 总之,Java使用MyBatisMySQL进行事务管理和回滚是非常简单和灵活的。通过合理地配置和使用事务管理器,我们可以确保数据库操作的一致性和可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值