Mybatis报错: Parameter 'XXX' not found. Available parameters are [arg1, arg0, param1, param2]解决方案及问题根源
废话不多说,先上解决方案
- 解决方案一:在参数前加上@Param注解
- 解决方案二:修改idea设置
File->Settings->Build,Execution,Deployment->Compiler->Java Compiler
在 Additional command line parameters: 后面填上 -parameters
重新编译项目 搞定!
注: 该解决方案的前提是你的java必须是8以上,Mybatis必须是3.4.1版本以上
官方手册说自Mybatis3.4.1版本后, 允许使用方法签名中实际的参数名作为他们的别名,也就是说在有个参数的方法中,你不再需要添加@Param注解便可以直接在sql语句中使用参数本身的名字。为了使用这个特性,有个很重要的前提:你的项目必须采用Java8编译并且加上 -parameters 选项。
有些idea版本较低,所以需要手动添加 -parameters选项。在新版本的idea中会自动添加该选项(如下图),这也就是为什么有的时候代码在你的电脑上可以跑,在别人的电脑上需要加上@Param注解才能跑的原因。
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
IDE和Maven开启-parameters的办法
Eclipse中开启的办法
Preferences->java->Compiler
下勾选Store information about method parameters
选项。
这样在使用eclipse编译java文件的时候就会将参数名称编译到class文件中。
Idea中开启的方法
File->Settings->Build,Execution,Deployment->Java Compiler
下的Additional command line parameters
选项中添加-parameters
。
Maven中开启的办法
在pom.xml的编译插件中增加参数配置<arg>-parameters</arg>
。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<compilerArgs>
<arg>-parameters</arg>
</compilerArgs>
</configuration>
</plugin>
另外附上测试使用Maven install命令编译class文件的情况:
使用maven install编译生成jar包时:
- 如果target/classes下class文件对于源码文件都没有修改,不会重新编译,直接打包classes下的class文件;
- 如果target/classes下class文件对于源码文件都有修
-
Java8获取参数名及Idea/Eclipse/Maven配置
原文地址:https://www.cnblogs.com/liuchengcc/p/8318350.html