第一:注入PlatformTransactionManager
@Autowired
private PlatformTransactionManager manager;
第二:在需要的地方开启事务
@Test
void transactionDemo() {
TransactionDefinition definition = new DefaultTransactionDefinition();
//删除操作,开启事务
TransactionStatus deleteStatus = manager.getTransaction(definition);
try {
userinfoService.removeById(1);
//todo 数据库操作
manager.commit(deleteStatus);
} catch (Exception e) {
manager.rollback(deleteStatus);
}
//插入操作,开启另一个事务
for (int i = 0; i < 5; i++) {
Userinfo userinfo = new Userinfo();
userinfo.setPassword("12345"+i);
userinfo.setUsername("admin"+i);
userinfo.setType(i);
TransactionStatus insertStatus = manager.getTransaction(definition);
try {
userinfoService.save(userinfo);
int i2 = 1/0;
manager.commit(insertStatus);
} catch (Exception e) {
manager.rollback(insertStatus);
}
}
}