mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.bindingBindingException

问题:

org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.binding.BindingException: Parameter 'name' not found. Available parameters are [arg3, arg2, arg1, arg0, param3, param4, param1, param2]

以我的报错为例,这其实是 MyBatis 在绑定参数时找不到名为 name 的参数。 那么我们可以建立 Java 方法参数与 SQL 语句中占位符之间的正确映射

方法一:检查一些小细节

  • XML映射文件的名称与Mapper接口名称一致,并且将XML映射文件和Mapper接口放置在相同包下(同包同名)
  • XML映射文件的namespace属性为Mapper接口全限定名一致。
  • XML映射文件中sql语句的id与Mapper 接口中的方法名一致,并保持返回类型一致。
  • 确保在调用 Mapper 接口方法时传递的参数类型正确,并且数量与期望的参数数量一致

方法二:检查 Mapper 接口方法加入@Param注解

这里引用黑马的一张图(我就是这样的解决的)

注意:@Param中的参数要与sql语句中的占位符的变量相同

dao层

public interface UserMapper {  
    User selectUserByName(@Param("name") String name);  
}

 xml中的sql

select * from emp where name like concat('%',#{name},'%')
           

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值