JdbcTemplate batchUpdate 批量操作加事务

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的编程式事务管理和声明式事务管理都不起作用,为何?

相关推荐