莫名其妙,今天写代码遇到个低级错误,困扰了很久,测试忽然给提了个缺陷,说业务逻辑有问题
因而,就启动了缺陷排查的流程
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