zl程序教程

您现在的位置是:首页 >  其他

当前栏目

Mybatis出现Parameter ‘XXX‘ not found. Available parameters are [0, 1, param1, param2]错误解决方法

错误方法mybatis 解决 not 出现 found xxx
2023-09-14 09:04:53 时间

一、报错分析

1. 控制台报错分析 

Caused by: org.apache.ibatis.binding.BindingException: Parameter 'phone' not found. Available parameters are [arg1, arg0, param1, param2]

也就是phone参数找不到

2. 数据库报错分析

1054 - Unknown column '123qwe' in 'where clause'

加个 引号 数据就查出来了

但是,#{}参数占位符可以自主判断参数是否需要 + " ",所以传到数据库查询是上图结果。

二、错误原因

当使用多个单参数没有使用@Param注解进行标注的方式进行传值时,就会出现参数xxx找不到的问题。如下图这种没有加注解的

  • 在没有@Param注解指定参数名时,底层使用的是一个HashMap集合,把每个参数以key为(arg0…argN,value)为实际参数和key为(param1…paramN,value)为实际参数的形式,依次存入到HashMap集合中。
  • 例如: {arg0=张三,param1=1000,arg1=lisi,param2=lisi…}
  • 在进行执行的时候会用mapper文件中sql的占位参数名去集合中获取,获取不到就会报这个异常

三、解决办法 

1. 解决方式一

使用@Param注解进行标注的方式进行传值

2. 解决方式二

参数使用args…param…

 可用参数:arg0,arg1

可用参数:param1,param2