报错org.apache.ibatis.binding.BindingException: Parameter 'xxxxx' not found.

报错Parameter ‘xxxx’ not found. Available parameters are [0, 1, param1, param2…
1.报错信息
  今天使用mybatis查询数据的时候,出现org.apache.ibatis.binding.BindingException: Parameter ‘username’ not found. Available parameters are [0, 1, param1, param2] 问题。

报错信息:

文字:

org.apache.ibatis.binding.BindingException: Parameter ‘username’ not found. Available parameters are [0, 1, param1, param2]
at org.apache.ibatis.binding.MapperMethod$ParamMap.get(MapperMethod.java:168)
at org.apache.ibatis.reflection.wrapper.MapWrapper.get(MapWrapper.java:45)
at org.apache.ibatis.reflection.MetaObject.getValue(MetaObject.java:122)
at org.apache.ibatis.executor.BaseExecutor.createCacheKey(BaseExecutor.java:212)
at org.apache.ibatis.executor.CachingExecutor.createCacheKey(CachingExecutor.java:139)
at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:81)
1
2
3
4
5
6
7
8
2.产生原因
字面上,就是说Mybatis并没有匹配到这个参数。

3.解决方案
使用注解@Param(“XXX”)来完成。

1.当只有一个参数时,Mapper/Dao层中的方法是可以不使用注解的。
比如插入数据的时候:

public void insertAdmin(String username);

2.多个参数时必须用@Param(“XXX”)来指明:
比如登录验证的时候:

public void insertAdmin(@Param(“username”)String username,@Param(“password”)String password);

此时在运行就不会再报错了。

4.总结
在dao接口方法中的参数前面加@param注解情景:

1.当只有一个参数时,dao接口的方法中可不用添加注解。Mybatis可成功匹配参数。
2.当大于一个参数时,dao接口的方法中需要使用注解@Param(“XXX”)为Mybatis指定参数名称。

另外如果你要传入多个参数的时候,要么使用map传入,要么加上@Param注解

参考博客:https://blog.csdn.net/csdn_am/article/details/79854107

作者:csdnzoutao
来源:CSDN
原文:https://blog.csdn.net/itbiggod/article/details/82705287
版权声明:本文为博主原创文章,转载请附上博文链接!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值