问题描述
Mybatis接口如果含有多个参数时,参数如果没加@Param(“xxx”)注解,执行的时候报错:BindingException: Parameter ‘xxx’ not found, Avaliable parameters are [arg1, arg0, param1, param2]
解决方案
java为了避免参数名导致.class文件过大或者占用更多的内存,避免有些参数泄露安全信息,默认情况下,在编译java文件时候是不保留参数名称的。
如果需求保留参数名称,编译的时候,需要带上-parameters参数
javac -parameters xxx.java
通常情况下,我们会在maven插件中,启用这个参数。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<parameters>true</parameters>
</configuration>
</plugin>
如果做了以上操作还是不行,则需要检查下MyBatis
是否开启了使用真实参数名。父项目如果是springboot-starter-parent
, 则默认开启了这个配置;MyBatis 3.4.1
版本之前,这个配置默认是false,需要手动开启。
mybatis:
configuration:
use-actual-param-name: true