事务回滚
数据库初始数据
未添加@Transactional的情况
@RestController
@RequestMapping("/Test")
@Slf4j
public class TestController {
@Autowired
private ClientMapper clientMapper;
@PostMapping("/insertClient")
public Integer updateClient(@RequestBody Client client){
int num = clientMapper.updateById(client);
int a = 2/0;
if (num >= 0){
return 1;
}
return 0;
}
}
Postman测试
可以看到,num=1,更新操作正常执行
随后报错,但此时更新操作已经完成
此时,数据库也已经更新了,但实际出现了错误
添加@Transactional的情况
接上文,数据库更新完毕,添加@Transactional
@RestController
@RequestMapping("/Test")
@Slf4j
public class TestController {
@Autowired
private ClientMapper clientMapper;
@Transactional
@PostMapping("/insertClient")
public Integer updateClient(@RequestBody Client client){
int num = clientMapper.updateById(client);
int a = 2/0;
if (num >= 0){
return 1;
}
return 0;
}
}
将clientCode值设置为3,进行测试
此时num=1,说明更新操作执行完毕
随后报错,观察数据库
可以发现数据库中clientCode的值仍是2,未改变为3,说明注解起作用了