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

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

1.报错信息

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

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)


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注解情景:

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

参考

https://blog.csdn.net/admin123404/article/details/87387752

posted @ 2022-08-07 11:05  哩个啷个波  阅读(648)  评论(0编辑  收藏  举报