Mybatis报错找不到参数解决之编译保留参数名称


Hi, I’m Shendi


Mybatis报错找不到参数解决之编译保留参数名称




需求场景

在使用 Mybatis 的过程中,对于函数参数,通常会加上 @Param 注解来给参数命名,以让 Mybatis 找到参数。

有的时候忘记添加,执行时就会报找不到参数的错误,但这样太麻烦了,增加了开发时间,于是可以保留编译的参数名称,不用 @Param 注解

不仅仅是Mybatis,对于需要反射获取到变量名称来做处理的框架来说都可以使用。

以前一直用的这个,后面没管也没记录,就忘记了。于是换了新的环境就导致又一次报错了,所以在这里记录下来



Java编译保留函数与参数名称信息

这个特性是 JDK 1.8 才有的


在编译时,默认会将参数名称整为 arg0,arg1这样的形式

通过编译参数 -parameters 来保留代码中的名称


Eclipse

在Eclipse中,需要勾选 Store information about method parameters (usable via reflection)

在 Window -> Preferences -> Java -> Compiler 中

Mybatis报错找不到参数解决之编译保留参数名称_第1张图片


IDEA

在 File -> Settings -> Build, Execution, Deployment -> Compiler -> Java Compiler 中

Additional command line parameters 项输入 -parameters

Mybatis报错找不到参数解决之编译保留参数名称_第2张图片



优缺点

优点:

  • 保留参数名称信息:使用-parameters选项编译Java代码时,会保留方法参数的名称信息。这使得在运行时通过反射机制能够获取到方法的真实参数名称,提高了代码的可读性和可维护性。
  • 提升调试和日志记录能力:保留参数名称信息对于调试和日志记录非常有帮助。当出现问题时,可以通过反射获取到方法的参数名称,从而更轻松地跟踪和定位问题。
  • 提高开发效率: 使用-parameters参数可以省略编写额外的代码来指定参数的名称,因此可以提高编码效率。

缺点:

  • 增加编译后的类文件大小:由于保留了参数名称信息,编译后的类文件大小会有所增加。这可能会对应用程序的加载和启动时间产生一定的影响。
  • 潜在的性能开销:使用-parameters选项会增加一些运行时性能开销,因为需要额外的元数据来存储参数名称信息。尽管这个开销相对较小,但在性能敏感的应用程序中可能需要权衡使用。



END

你可能感兴趣的:(Java,mybatis)