[19051501]记录一次日常犯的错

0

Parameter 'array' not found. Available parameters are [collection, list]

莫名其妙,今天写代码遇到个低级错误,困扰了好久,测试突然给提了个缺陷,说业务逻辑有问题
于是,就启动了缺陷排查的流程

1.问题复现
   根据问题复现步骤,确实发现业务逻辑不对
2.代码排查
   根据代码排查,业务逻辑确实写了,对表的更新
3.日志排查
   根据日志排查,发现新增的代码并没有执行,而且,也没有报错。随后就进行了纠结(现在都想敲死自己,应该不用纠结,在编辑器debug跑一遍,问题就暴露出来了)。
4.解决问题
   先使用单测,跑了一遍对应的方法,发现确实没有问题,所以怀疑,是因为MOCK掉的DAO方法,抛了一个异常,然后没有显式的抛出来,所以就手动debug启动了下应用,就是POSTMAN测试,果然,报错如下:

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",否则就会抛异常。
至于为什么在服务器上没有抛异常出来,很可能是被框架给吃掉了,需要进一步排查。


如果觉得我的文章对你有用,请随意赞赏

你可能感兴趣的

载入中...