搜尋

首頁  >  問答  >  主體

eclipse - spring mvc + myBatis update不生效

運行環境 linux + tomcat
框架: springMvc + myBatis
資料庫:ORACLE

合作方呼叫我們的一個介面方法,能呼叫到,我們這邊封包接收後 與 他們 進行比較 也是一致的。並且解密後也都能解析出來。
但是執行呼叫 dao.update方法時,不能成功修改。
而我們本地用client模擬發送一樣報文post請求,dao.update方法,資料庫能成功修改字段資訊

這段是介面方法程式碼
`@Transactional(readOnly = false)

public Map<String,Object> auditNotice(String loanId ,Integer auditFlag){
     Map<String,Object> msg = new HashMap<String,Object>();
     String errMsg = "更改狀態失敗";
     TbLoan tbLoan = null;
     Date date = new Date();
     if(auditFlag == 0){
         //審核通過,更改商家的貸款狀態為審核通過
         tbLoan = tbLoanDao.get(loanId);
         if(null != tbLoan){
             System.out.println("貸款狀態:"+tbLoan.getLaonStatus());
             if(tbLoan.getLaonStatus().equals(Const.LOAN_STATUS_CONST.DAI_SHEN_HE)){
                 try {
                     TbLoan tbLoan2 = new TbLoan();
                     tbLoan2.setId(loanId);
                     tbLoan2.setUpdateDate(date);
                     User user = new User();
                     user.setId("xiaoyinglicai");
                     tbLoan2.setUpdateBy(user);
                     tbLoan2.setAuditPerson("xiaoying");
                     tbLoan2.setAuditTime(date);
                     tbLoan2.setRemarks("我是remark22");
                     tbLoan2.setLaonStatus(Const.LOAN_STATUS_CONST.SHEN_HE_TONG_GUO);
                     System.out.println("-------------開始更新貸款狀態---------");
                     System.out.println("貸款編號:"+loanId);
                     System.out.println("狀態:"+tbLoan2.getLaonStatus());
                     **int i = tbLoanDao.update(tbLoan2);**
                     if(i < 1){
                         errMsg = "審核結果通知呼叫失敗,狀態變更未成功,請重新呼叫!";
                         msg.put("ret", -1);
                     }else{
                         errMsg = "審核成功";
                         System.out.println(errMsg+"修改條數:"+i);
                         msg.put("ret", 0);
                     }
                 } catch (Exception e) {
                     errMsg = e.getMessage();
                 }
                 
             }else{
                 errMsg = "商家不是待審核狀態";
                 msg.put("ret", -1);
             }
         }else{
             errMsg = "未找到對應的商家資訊";
             msg.put("ret", -1);
      }
     }else{
         errMsg = "資金方審核未通過";
         msg.put("ret", -1);
         //審核不通過,修改商家貸款狀態為不通過(終審)
         TbLoan tbLoan2 = new TbLoan();
         tbLoan2.setId(loanId);
         tbLoan2.setUpdateDate(date);
         User user = new User();
         user.setId("xiaoyinglicai");
         tbLoan2.setUpdateBy(user);
         tbLoan2.setAuditPerson("xiaoying");
         tbLoan2.setAuditTime(date);
         tbLoan2.setRemarks("我是remark_3");
         tbLoan2.setLaonStatus(Const.LOAN_STATUS_CONST.SEHN_HE_SHI_BAI);
         tbLoanDao.update(tbLoan2);
         if(tbAuditFlagService.get(loanId)!=null){
             TbAuditFlag tbAuditFlag = new TbAuditFlag();
             tbAuditFlag.setRemarks(errMsg);
             tbAuditFlag.setLoanId(loanId);
             tbAuditFlagService.save(tbAuditFlag);
         }
     }
     msg.put("msg", errMsg);
     String json = JSONUtils.toJSONString(msg);
    System.out.println("審核通知:"+json);
        return msg;
}`

關鍵程式碼是 int i = tbLoanDao.update(tbLoan2); 合作方調用與我們本地client調用,這個i都回傳1,差別就是資料庫有沒成功修改。

以下是合作方呼叫後的日誌

-------------開始更新貸款狀態---------
貸款編號:22150
狀態:2
審核成功修改條數:1
審核通知:{"ret":0,"msg":"審核成功"}

並沒有拋異常


求大神給思路! !

高洛峰高洛峰2796 天前755

全部回覆(2)我來回復

  • 怪我咯

    怪我咯2017-04-24 09:12:44

    @Transactional(readOnly = false)

    這個註解不合適吧

    回覆
    0
  • 怪我咯

    怪我咯2017-04-24 09:12:44

    1.事務回滾了
    2.資料庫經典問題-遺失更新

    回覆
    0
  • 取消回覆