0
我正在尝试使用transactionTemplate来管理我的事务。该代码可以列出如下:transactionTemplate不适用于mybatis,但我不知道为什么
private Boolean isCleanSuccess(){
return transactionTemplate.execute(new TransactionCallback<Boolean>() {
@Override
public Boolean doInTransaction(TransactionStatus transactionStatus) {
String rmcName = "sync";
StringBuilder sbSync = new StringBuilder();
sbSync.append("delete from `t_sync_data_plan` WHERE 1=1");
StringBuilder sbRmc = new StringBuilder();
sbRmc.append("delete from `t_rmc_data` where `name`=\"")
.append(rmcName)
.append("\"");
try{
jdbcTemplate.execute(sbSync.toString());
jdbcTemplate.execute(sbRmc.toString());
/**
* throw the exception to make it rollback
*/
// throw new RuntimeException();
return true;
}catch (Exception ex){
LOG.error(ex);
transactionStatus.setRollbackOnly();
return false;
}
}
});
}
当我应付道使用JdbcTemplate的,它的工作原理。但是,如果我在使用myBatis时抛出异常,它就不能回滚。该XML代码列出如下:
我不知道为什么回滚只是工作的JdbcTemplate下,但在MyBatis的失去功效。表的引擎是InnoDB。 你能帮我一下吗?近两周我一直困惑不解。 对不起,我可怜的英语带来了不便。
谢谢您的回答。似乎'multipleDataSource'有问题。我的工作人员刚刚找到了原因并修复了这个错误。曾经,我也尝试使用@Transactional,但是我的代码样式必须与其他人一致。不管怎样,谢谢你! – Merorin