引入事务管理器
@Autowired
TransactionTemplate transactionTemplate;
@Autowired
PlatformTransactionManager transactionManager;
使用方式1
boolean result = transactionTemplate.execute(
new TransactionCallback<Boolean>() {
@Override
public Boolean
doInTransaction(TransactionStatus status) {
try {
}
catch (Exception e) {
status.setRollbackOnly();
logger.error(e.getMessage(), e);
return false;
}
return true;
}
});
使用方式2
/**
* 定义事务
*/
DefaultTransactionDefinition
def =
new DefaultTransactionDefinition();
def.setReadOnly(
false);
def.setIsolationLevel(TransactionDefinition.ISOLATION_READ_COMMITTED);
def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
TransactionStatus status = transactionManager.getTransaction(
def);
try {
transactionManager.commit(status);
}
catch (Exception e) {
transactionManager.rollback(status);
throw new InvoiceApplyException(
"异常失败");
}
使用方式3
SqlSession sqlSession =
null;
try {
sqlSession = otInvSqlSessionFactory.openSession(ExecutorType.BATCH,
true);
XXXXXMapper xXxxMapper = sqlSession.getMapper(XXXXXMapper.class);
sqlSession.commit();
}
catch(
Exception e){
if (
null != otInvSqlSession) {
sqlSession.rollback(
true);
logger.error(
"数据回滚", e);
}
}
finally {
if (
null != sqlSession) {
sqlSession.clearCache();
sqlSession.close();
}
}