mxcsdn 2010-09-20
JdbcTemplatebatchUpdate可以用来进行批量操作,但在中途某条数据出错时如何处理?
加入spring事务,目前发现一种能通过spring编程式事务(基于TransactionTemplate的事务管理)可以实现。
1.不带返回类型
publicvoidtransfer(finalListsqls){
transactionTemplate.execute(newTransactionCallbackWithoutResult(){
protectedvoiddoInTransactionWithoutResult(TransactionStatusstatus){
try{
//JdbcTemplatebatchUpdate操作
JdbcTemplate.batchUpdate(Listsqls);
}catch(Exceptione){
System.out.println("----------RuntimeException-----"+e);
status.setRollbackOnly();//回滚
accountSumBusinessService.rollback();
}
}
});
}
2.带返回类型
publicExceptiontransfer(finalListsqls){
return(Exception)transactionTemplate.execute(newTransactionCallback(){
publicExceptiondoInTransaction(TransactionStatusstatus){
Exceptionexception=null;
try{
//JdbcTemplatebatchUpdate操作
JdbcTemplate.batchUpdate(Listsqls);
}
accountSumBusinessService.finishBatchProcess();
}catch(Exceptione){
System.out.println("----------RuntimeException-----"+e);
status.setRollbackOnly();//
accountSumBusinessService.rollback();
exception=e;
}
returnexception;
}
});
}
疑问:基于TransactionManager的编程式事务管理和声明式事务管理都不起作用,为何?