莫名其妙,今天寫代碼遇到個低級錯誤,困擾了很久,測試忽然給提了個缺陷,說業務邏輯有問題
因而,就啓動了缺陷排查的流程
1.問題復現
根據問題復現步驟,確實發現業務邏輯不對
2.代碼排查
根據代碼排查,業務邏輯確實寫了,對錶的更新
3.日誌排查
根據日誌排查,發現新增的代碼並無執行,並且,也沒有報錯。隨後就進行了糾結(如今都想敲死本身,應該不用糾結,在編輯器debug跑一遍,問題就暴露出來了)。
4.解決問題
先使用單測,跑了一遍對應的方法,發現確實沒有問題,因此懷疑,是由於MOCK掉的DAO方法,拋了一個異常,而後沒有顯式的拋出來,因此就手動debug啓動了下應用,就是POSTMAN測試,果真,報錯以下:shell
nested exception is org.apache.ibatis.binding.BindingException: Parameter 'array' not found. Available parameters are [collection, list]
這裏是由於,在mybaits傳集合參數,進行循環時,必定要指定集合類型,目前mybaits對List集合和Array集合,是不一樣,須要在循環時指定對應的集合,若是使用相似於Long[] 等進行傳參時,必定要指定collection="array",若是使用List進行傳參時,須要指定collection="list",不然就會拋異常。
至於爲何在服務器上沒有拋異常出來,極可能是被框架給吃掉了,須要進一步排查。apache