1. 程式人生 > >Jfinal 事物應用回滾

Jfinal 事物應用回滾

直接上程式碼,SpringMVC做的控制層

要保證賬戶餘額的變動和財務的流水錶在同一個事物內。

/**
	 * 加款或者減款
	 * @param model
	 * @return
	 */
	@RequestMapping("updateYuE")

	public String toEdit(Model model,HttpServletRequest request,final String id,final String userName,final String realName,final String operationType,final String money,final String operationNote) {
		//非空驗證
		if(StringUtils.isEmpty(id)||StringUtils.isEmpty(userName)||StringUtils.isEmpty(operationType)||StringUtils.isEmpty(money)){
			return "/background/framework/failed";
		}
		
		final User attribute = (User) request.getSession().getAttribute("userSession");
		
		
		Db.tx(new IAtom() {
			 //在執行run的過程中,如果有異常將回滾,或者return false 將回滾
			@Override
			public boolean run() throws SQLException {

				//代理師賬戶加款減款的流水的日誌表
				UseraFlow useraFlow= new UseraFlow();
				useraFlow.setOperator(attribute.getUserName());//獲取當前後臺登入使用者名稱
				useraFlow.setOperationType(operationType);
				useraFlow.setOperationNote(operationNote);
				useraFlow.setMoney(money);
				useraFlow.setUseraId(id);//代理師id
				useraFlow.setUserName(userName);
				useraFlow.setRealName(realName);
				useraFlow.save();
				
			/*int a	=10/0;*///測試回滾
				
				
				if(operationType.equals("1")){//加款
					Db.update("UPDATE t_usera SET daiKuanYongJin = daiKuanYongJin + ? WHERE id = ? ",money,id);
				}else if(operationType.equals("0")){//減款
					Db.update("UPDATE t_usera SET daiKuanYongJin = daiKuanYongJin - ? WHERE id = ? ",money,id);
				}
				return true;
			}
		});
		
		
		
		
		
		return "redirect:toList.html";
		
	}