记录没见过的Bug之BindingException
今天在写一个删除套餐功能时遇到个bug如下图所示:
我们都知道当一个请求参数有多个值接收时可以采用如下方式:
1. 使用数组接收 Long[] ids
2. 使用集合接收 List
这里我采用的是以集合方式来接收。
在Mapper接口中的方法如下
//动态sql long findCountByIds(List ids); //根据ids批量删除的套餐 void deleteByIds(List ids);
xml的sql语句如下:
#{id}
一切都看着那么的岁月静好,但最后运行却报错了。。。
分析原因:
原来在mybatis 中,当 Mapper传入的是 List 参数时,会自动将参数封装成 Map 参数,而 map中的 key 会自动用 list , value 就是你传入的 List 参数。
解决方法:
第一种: 将 List 参数封装为 Map 然后再传入,在 XML 配置页面写上相应 key 值.
第二种: 将 collection 的值修改为 list
这样报错就解决啦