摘要:随后就进行了纠结现在都想敲死自己,应该不用纠结,在编辑器跑一遍,问题就暴露出来了。至于为什么在服务器上没有抛异常出来,很可能是被框架给吃掉了,需要进一步排查。
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",否则就会抛异常。
至于为什么在服务器上没有抛异常出来,很可能是被框架给吃掉了,需要进一步排查。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/77704.html
摘要:究其原因,在于的惰性计算以及匿名函数的闭包特性。上面的代码中,是一个变量,匿名函数只有在时才会真正调用,而此时,的值已经是当前的值,而不是之前的值了,比如,应当是的倍数,但此时的值并不是,导致成立。 问题 python对函数式编程有一定的支持,具体表现在高级函数,map,reduce,filter,partial function等几个方面。在应用函数式编程中,需要关注函数式编程中的变...
摘要:而这一次的项目,原本以为开发挺顺利的,但是开发完了,才发现自己犯了一个低级而严重的错,这样的一个失误,我一直耿耿于怀。但是监听用户退出页面微信浏览器上面的那个返回或者关闭按钮却死活不行。也容易犯一些低级的错误。 1.前言 前端从事了超过两年,修复了无数的bug,写了无数的bug;挖了很多次坑,填了很多次坑;犯了很多次错,弥补了很多次,学习了很多次。一般而言,对于bug、坑,都是修复完了...
摘要:为那些经常出现在控制器或者门脸中的转发代码编写单元测试是很不划算的事。单元测试也有其成本。最理想的做法就是在持续集成服务器上,每次更改时都运行,从而在无需单元测试的情况下防止此类错误的产生。在年开始广泛使用包管理,单元测试和编码标准的工具。 showImg(https://segmentfault.com/img/remote/1460000017004148); PHPStan:无需...
阅读 3815·2021-11-24 09:39
阅读 3733·2021-11-22 12:07
阅读 1090·2021-11-04 16:10
阅读 773·2021-09-07 09:59
阅读 1878·2019-08-30 15:55
阅读 916·2019-08-30 15:54
阅读 709·2019-08-29 14:06
阅读 2451·2019-08-27 10:54