Spring事物手動回滾

手動回滾:

方法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";
}


 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章