分析場景發生在上周四需求迭代上線,因本次需求新增表,Dao層的Mapper文件都是新建的,表中有幾個字段是可空的。由于QA測試腳本出現了問題,測試時該字段傳的是空串,測試通過。但是當上線的時候插入空NULL值發現Mybatis拋出了異常。
異常信息如下圖:
異常信息打印
通過查庫確認字段是可空之后,又去Mapper文件中查找問題,發現在Insert語句中未指定字段的類型,所以當我們插入NULL值的時候,MyBatis不知道該參數的類型是什么,無法找到要轉換的對應數據庫的字段類型,于是拋出上圖的異常信息。正確的做法是:無論該參數是否可以為空,都在Mapper文件中指定該參數的類型,必要的時候還需要加入if標簽來做非空判斷,使代碼更加嚴謹,下面是正確的示例和錯誤的示例。
正確的示例
錯誤的示例