19.springboot 中使用 spring 的事务控制
首先看一下将要操作的数据库表student:(将要删除id等于3的学生信息)
未修改部分参考16文章:16.springboot+mybatis 实现数据库中学生表的查询操作 - ZhangLeiのWorld (zhangleistudy.com)
将16文章中的对应有的sql语句改成delete
第一处:StudentDao 接口
第二处:StudentDao.xml 文件
第三处:StudentService 类
第四处:StudentController 类
在 StudentService类的delete方法上加@Transactional注解
在 启动类上加 @EnableTransactionManagement注解
启动应用浏览器访问localhost:8080/delete/3
之后再看数据库表:
补充
虽然以上过程只是对id=3的学生信息进行了删除操作,并没有体现出事务。
我知道,mysql时自动提交事务的,也就是说,执行了一条DML语句,事务会自动提交,这里加上了事务注解,就相当于关闭了自动提交机制(要么全部成功,要么全部失败,不会单独成功或单独失败)
** 同时,如果在 StudentService 的delete 方法里最后加上一个异常,那么事务方法delete中出现部分异常,就不会提交事务。**
如果不加事务注解@Transaction,那么执行到某个DML语句方法就会自动提交事务!