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 中

在这里插入图片描述


IDEA

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

Additional command line parameters 项输入 -parameters

在这里插入图片描述



优缺点

优点:

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

缺点:

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



END

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/176487.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring Security OAuth2.0 实现分布式系统的认证和授权

Spring Security OAuth2.0 实现分布式系统的认证和授权 1. 基本概念1.1 什么是认证?1.2 什么是会话?1.2.1 基于 session 的认证方式1.2.2 基于 token 的认证方式 1.3 什么是授权?1.3.1 授权的数据模型 1.4 RBAC 介绍 2. Spring Security2.1 S…

Java整合Redis实现坐标附近查询

目录 一、GEO用法引入 二、引入依赖 三、实体类 四、添加位置信息 五、查询位置信息 一、GEO用法引入 GEO,全称Geolocation,代表地理坐标。可以在其中存储地理坐标信息,帮助我们根据经纬度来检索数据。常见的命令有:GEOADD&…

wireshark抓包并进行Eigrp网络协议分析

路由协议 Eigrp ​ EIGRP:Enhanced Interior Gateway Routing Protocol 即 增强内部网关路由协议。也翻译为 加强型内部网关路由协议。 EIGRP是Cisco公司的私有协议(2013年已经公有化)。 EIGRP结合了链路状态和距离矢量型路由选择协议的Cisco专用协议&a…

一文了解VR全景拍摄设备如何选择,全景图片如何处理

引言: 在如今的数字化时代,虚拟现实(VR)技术不仅为我们的生活增添了许多乐趣,也为摄影领域带来了新的摄影方式,那么VR全景拍摄如何选择设备,全景图片又怎样处理呢? 一. VR全景拍摄设…

Django下的Race Condition漏洞

目录 环境搭建 无锁无事务的竞争攻击复现 无锁有事务的竞争攻击复现 悲观锁进行防御 乐观锁进行防御 环境搭建 首先我们安装源码包:GitHub - phith0n/race-condition-playground: Playground for Race Condition attack 然后将源码包上传到Ubuntu 为了方便使…

【Proteus仿真】【Arduino单片机】DHT11温湿度

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真Arduino单片机控制器,使用PCF8574、LCD1602液晶、DHT11温湿度传感器等。 主要功能: 系统运行后,LCD1602显示传感器采集温度和湿度。 二、软件设…

探索数据湖和大数据在亚马逊云服务云存储服务上的威力

文章作者:Libai 引言 在当今数字化的环境中,组织生成的数据量正以前所未有的速度增长。数据量的激增催生了对高效存储和管理解决方案的需求。数据湖和亚马逊云服务云存储服务上的大数据是一个强大的组合,使组织能够充分发挥其数据的潜力。 亚…

Ocelot:.NET开源API网关提供路由管理、服务发现、鉴权限流等功能

随着微服务的兴起,API网关越来越常见。API网关是连接应用程序和用户之间的桥梁,就像一个交通指挥员,负责处理所有进出应用的数据和请求,确保安全、高效、有序地流通。 今天给大家推荐一个.NET开源API网关。 01 项目简介 Ocelot…

JavaEE初阶学习:JVM(八股文)

1.JVM 中的内存区域划分 JVM 其实是一个Java进程~ java 进程会从操作系统这里申请一大块内存区域,给java代码使用~ 内存区域进一步划分,给出不同的用途 1.堆 new 出来的对象 (成员变量) 2.栈 维护方法之间的调用关系 (局部变量) 3.方法区(旧) / 元数据区 (新) 放的是类加载之…

基于Java+Vue+uniapp微信小程序商品展示系统设计和实现

博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…

【Proteus仿真】【Arduino单片机】HC-SR04超声波测距

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真Arduino单片机控制器,使用PCF8574、LCD1602液晶、HC-SR04超声波传感器等。 主要功能: 系统运行后,LCD1602显示超声波检测距离。 二、软件设计 …

解决删除QT后Qt VS Tools中Qt Options中未删除的错误

在Qt VS Tools的Qt Options已经配置好Qt Versions后如果删除QT程序之后会出现Default Qt/Win version任然存在,这是如果再添加一个话就不能出现重名了,如果新建一个其他名字的话其实在vs中还是不能正常运行qt,会出现点击ui文件vs会无故重启或…