1. 程式人生 > >Spring使用註解@Transactional事物手動回滾

Spring使用註解@Transactional事物手動回滾

手動回滾:

方法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