分析场景发生在上周四需求迭代上线,因本次需求新增表,Dao层的Mapper文件都是新建的,表中有几个字段是可空的。由于QA测试脚本出现了问题,测试时该字段传的是空串,测试通过。但是当上线的时候插入空NULL值发现Mybatis抛出了异常。
异常信息如下图:
异常信息打印通过查库确认字段是可空之后,又去Mapper文件中查找问题,发现在Insert语句中未指定字段的类型,所以当我们插入NULL值的时候,MyBatis不知道该参数的类型是什么,无法找到要转换的对应数据库的字段类型,于是抛出上图的异常信息。正确的做法是:无论该参数是否可以为空,都在Mapper文件中指定该参数的类型,必要的时候还需要加入if标签来做非空判断,使代码更加严谨,下面是正确的示例和错误的示例。
正确的示例 错误的示例
网友评论