1.java编程式事务
1.1 有返回值事务
@Autowired
private TransactionTemplate transactionTemplate;
return transactionTemplate.execute(status -> {
//业务逻辑
return null;
})
1.2 无返回值事务
@Autowired
private PlatformTransactionManager transactionManager;
DefaultTransactionDefinition transactionDefinition;
TransactionStatus transactionStatus = null;
try {
// 有事务,则使用当前事务;否则开启新事务
transactionDefinition = new DefaultTransactionDefinition();
transactionDefinition.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
transactionStatus = transactionManager.getTransaction(transactionDefinition);
//业务代码
transactionManager.commit(transactionStatus);
} catch (Exception e) {
if (transactionStatus != null) {
transactionManager.rollback(transactionStatus);
}
throw new RuntimeException(e);
}