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