Mybatis

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包时:

  1. 如果target/classes下class文件对于源码文件都没有修改,不会重新编译,直接打包classes下的class文件;
  2. 如果target/classes下class文件对于源码文件都有修

     

  3. Java8获取参数名及Idea/Eclipse/Maven配置

    原文地址:https://www.cnblogs.com/liuchengcc/p/8318350.html

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值