手写Spring事务,比 @Transactional灵活,更适合多种场景的业务编码
@Resource(name = "dsTransactionManager")
private DataSourceTransactionManager transactionManager;
private boolean testTrasation(){
DefaultTransactionDefinition def = new DefaultTransactionDefinition();
def.setIsolationLevel(TransactionDefinition.ISOLATION_REPEATABLE_READ);
// 3.设置事务隔离级别,开启新事务
def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
// 4.获得事务状态
TransactionStatus status = transactionManager.getTransaction(def);
boolean flag = true;
try {
sql //你的执行sql
flag = 根据sql执行结果进行赋值;
} catch (Exception e) {
flag = false;
} finally {
if (flag) {
transactionManager.commit(status);
} else {
transactionManager.rollback(status);
}
}
}