Spring使用註解@Transactional事物手動回滾
阿新 • • 發佈:2019-01-03
手動回滾:
方法1:在service層方法的catch語句中增加:TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();語句,手動回滾,這樣上層就無需去處理異常(現在專案的做法)
方法2:例如service層處理事務,那麼service中的方法中不做異常捕獲,或者在catch語句中最後增加throw new RuntimeException()語句,以便讓aop捕獲異常再去回滾,並且在service上層(webservice客戶端,view層action)要繼續捕獲這個異常並處理
回滾+返回值:
//普通繳費 @Transactional public String commonMoney(Receipt rpt,Moneyrecord mors){ rpt.setState(1); int a=dao.insert(rpt); if(a<=0) return"繳費失敗"; mors.setPric(rpt.getPic()); mors.setExid(rpt.getPid()); mors.setState(1); boolean tf=mrs.custom(mors); if(!tf){ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return"餘額不足"; } return "OK"; }
來自於:https://blog.csdn.net/SVDJASFHIAU/article/details/53079739