事务管理
在程序进行逻辑操作的时候,往往会对数据库进行几次操作,但是有时候会造成某一次操作失败,导致产生了不合适的数据。
使用事务处理,当进行多次对数据库操作的时候其中一次执行失败的时候,则全部不进行操作。
此处案例结合之前的几篇文章进行处理
- 创建service类(已添加事务管理注解)
package com.example.demo2; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.List; @Service public class GirlServer { @Autowired //自动注入 private GirlRepo girlRepo;//此处的类已经在前面的学习笔记中写过 @Transactional //事务注解 public void InsertTwoGirl(){ Girl a = new Girl();//此处的类已经在前面的学习笔记中写过 a.setAge(16); a.setUserName("12345"); a.setPassword("12345"); girlRepo.save(a); Girl b = new Girl(); b.setAge(25); b.setUserName("321656"); b.setPassword("321656"); girlRepo.save(b); } }
- 添加事务管理注解
在创建的项目中xxxApplication.java
类中开启事务管理@EnableTransactionManagement
,在上面的service类中已经添加了@Transaction
注解 编写测试代码
@GetMapping("/addTwoGirl") public void addTwoGirl(){ girlServer.InsertTwoGirl(); }
访问地址:http://127.0.0.1:8088/addTwoGirl
执行数据库设置
emmmm......此处的Girl....插入......是因为在imooc看的视频教程,莫名的就开了一把车.....请忽略.....
数据库必须支持 事务管理,类型为
InnoDB
。
数据库中girl
表的userName
字段的限制长度为5,
若 不使用事务,则会因一条数据长度不够只插入一条数据
若 使用事务,则也会因数据长度不够而插入失败,此时数据库没有插入一条数据。