前言
通常情况下多写操作需要用的事务,如:一个操作需要新增用户,同时需要新增角色,如果新增用户成功,但是新增角色失败,返回操作失败给到用户,同时新增的用户需要回滚,本文主要描述Spring事务的使用。
事务的使用
- 开启事务管理器
/**
* 事务测试
* @author terry
* @version 1.0
* @date 2022/5/24 21:06
*/
@SpringBootApplication
@EnableTransactionManagement
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
2.数据库配置
application.yml
spring:
datasource:
driverClassName: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://192.168.126.156:3306/test
username: root
password: 123456
3.编写业务代码
@Service
class UserService {
@Autowired
private JdbcTemplate jdbcTemplate;
@Transactional(rollbackFor = Exception.class)
public void insertUser(){
// 插入用户
jdbcTemplate.update("INSERT INTO user(id, name) VALUES(1, 'terry')");
// 插入角色
jdbcTemplate.update("INSERT INTO role(user_id) VALUES(1)");
// 模拟后续逻辑报错(回滚数据)
throw new RuntimeException();
}
}
4.测试
@SpringBootTest(classes = App.class)
public class TransactionTest {
@Autowired
private UserService userService;
@Test
public void insertTest(){
userService.insertUser();
}
}
回滚数据如下:

注释掉报错
@Transactional(rollbackFor = Exception.class)
public void insertUser(){
// 插入用户
jdbcTemplate.update("INSERT INTO user(id, name) VALUES(1, 'terry')");
// 插入角色
jdbcTemplate.update("INSERT INTO role(user_id) VALUES(1)");
// throw new RuntimeException();
}
可以正常插入数据,如下:

本文介绍如何在Spring框架中实现事务管理。通过一个具体的例子演示了如何配置事务管理器、设置数据库连接参数,并编写业务代码来确保数据的一致性和完整性。
1716

被折叠的 条评论
为什么被折叠?



