mybatis: nested exception is org.apache.ibatis.binding.BindingException:

免责声明:转载仅仅因为解决了我的问题,如果对你无效,麻烦出门右拐别瞎在评论里怨天尤人。

转自:https://blog.csdn.net/jeffleo/article/details/55803548

一、异常

org.mybatis.spring.MyBatisSystemException: 
nested exception is org.apache.ibatis.binding.BindingException: 
Parameter 'seckillId' not found. 
Available parameters are [1, 0, param1, param2]


二、分析

异常的大概意思就是,mapper方法的参数绑定异常,然后看看我的mapper.xml和mapper.java文件:

SuccessKilled queryByIdWithSeckill(long seckillId, long userPhone);

 <insert id="insertSuccessKilled">
        INSERT ignore INTO success_killed(seckill_id,user_phone,state)
        VALUES (#{seckillId},#{userPhone},0)
 </insert>


这个异常的产生原因是,当mapper接口方法有多个参数时,java不会保存行参的记录,java在运行的时候会把方法中的参数(long seckillId, long userPhone)变成这样:(int arg0,int arg1),这样我们就没有办法去传递多个参数(注意,在多个参数时才会发生)

三、解决方法


需要在mapper接口中指定参数名称:

SuccessKilled queryByIdWithSeckill(@Param("seckillId")long seckillId, @Param("userPhone") long userPhone);

这样才能使我们的MyBatis识别offset和limit两个参数,将Dao层方法中的这两个参数与xml映射文件中sql语句的传入参数完成映射

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值