org.apache.ibatis.binding.BindingException: Parameter '__frch_item_0' not found. Available parameter

1、问题背景:

今天使用MyBatis的批量插入功能,结果报了这个错:

org.apache.ibatis.binding.BindingException: Parameter '__frch_item_0' not found. Available parameters are [list]

源sql如下:

2、分析问题:

List中放置的是我自定义的一个类对象,最初怀疑:是不是自定义对象在这里没有拿到。

该异常的抛出机制可以参考 http://mp.csdn.net/postedit/79608900

3、排查过程:

(1) 简化插入项数,剩余一项,确保实体类里的该属性以及其对应的get方法和set方法是否标准(注意MyBatis中#{item.documentNumber}这一步是通过反射从实体类对象中获取对应属性值,因此实体类的get方法必须是标准写法,例如属性名为documentNumber,那么你的get方法一定是get加首字母大写的属性名getDocumentNumber)。

再次运行程序,插入成功,说明可以拿到对象,至于上边的报错,很有可能是某个属性没写对了

(2)逐项检查所有属性,检查过后,发现果然是在实体类中改了optType属性之后,没有改mapper中的相关值,改过之后,插入成功。如果插入相比较多,例如有100个字段,万一第99个字段写错了,如果从头逐个检查就会做大量的无用功,可以采用二分法思路进行排查,例如删除后50个属性,执行成功后说明问题在后50,执行失败说明前50有问题,然后以此类推找出问题。

 

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值