首页 > 编程知识 正文

使用jdbc事务的步骤是,mybatis事务回滚

时间:2023-05-03 09:34:58 阅读:278104 作者:2005

Mybatis中的事务原理和自动提交设置 Mybatis中的事务

什么是事务

事务是指的是一个业务上的最小不可再分单元,通常一个事务对应了一个完整的业务,而一个完整的业务需要批量的DML语句共同联合完成。

事务的四大特性ACID

a:原子性:事务里的内容要么全部成功要么都不成功。c:一致性:事务前后数据的完整性保持一致,如:a给b转一千块,事务执行以后,a和b的钱总数是一样的。i:隔离性:隔离性是当多个用户并发访问数据库时,比如操作同一张表时,数据库为每一个用户开启的事务,不能被其他事务的操作所干扰,多个并发事务之间要相互隔离。  即要达到这么一种效果:对于任意两个并发的事务T1和T2,在事务T1看来,T2要么在T1开始之前就已经结束,要么在T1结束之后才开始,这样每个事务都感觉不到有其他事务在并发地执行。d:持久性:事务结束,数据就持久化到数据库。

不考虑隔离性会产生的3个问题

脏读:一个事务读到另一个事务未提交的数据。
不可重复读:在一个事务里面读取了两次某个数据,读出来的数据不一致
幻读:在一个事务里面的操作中发现了未被操作的数据

解决办法:四种隔离级别

事务隔离级别:读未提交:事务未提交的数据可以读。什么问题都解决不了读已提交:读取已经提交了的数据,可以防脏读,不能防不可重复读和幻读。可重复读:读一个数据时,上锁。期间不让其他事务做删除修改操作串行化:直到一个事务的所有子事务全部结束才可以执行下一个事务。

事务提交

Mybatis中的事务是通过sqlsession对象的commit方法和rollback方法实现事务的提交和回滚
走来走去提交和回滚都少不了connection,也就是原来jdbc的操作

我们在创建sqlsession中设置了提交的方式,所以导致每一次都需要commit

但是有着一个方法变成自动提交

只需要改一下就好了

我们在后面的操作就不需要进行提交操作了

这样你的@Test依然可以进行

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。