19.springboot 中使用 spring 的事务控制

zhanglei 2022年07月10日 284次浏览

19.springboot 中使用 spring 的事务控制

首先看一下将要操作的数据库表student:(将要删除id等于3的学生信息)

image-20220710104530267

未修改部分参考16文章:16.springboot+mybatis 实现数据库中学生表的查询操作 - ZhangLeiのWorld (zhangleistudy.com)

将16文章中的对应有的sql语句改成delete

第一处:StudentDao 接口

image-20220710104848576

第二处:StudentDao.xml 文件

image-20220710110218315

第三处:StudentService 类

image-20220710105030193

第四处:StudentController 类

image-20220710105113775

在 StudentService类的delete方法上加@Transactional注解

image-20220710105421991

在 启动类上加 @EnableTransactionManagement注解

image-20220710105847664

启动应用浏览器访问localhost:8080/delete/3

image-20220710110343766

之后再看数据库表:

image-20220710110446282

补充

​ 虽然以上过程只是对id=3的学生信息进行了删除操作,并没有体现出事务。
​ 我知道,mysql时自动提交事务的,也就是说,执行了一条DML语句,事务会自动提交,这里加上了事务注解,就相当于关闭了自动提交机制(要么全部成功,要么全部失败,不会单独成功或单独失败)
​** 同时,如果在 StudentService 的delete 方法里最后加上一个异常,那么事务方法delete中出现部分异常,就不会提交事务。**
​ 如果不加事务注解@Transaction,那么执行到某个DML语句方法就会自动提交事务!