MyBatis 中的@Param注解最佳实践

 更新时间:2025年11月25日 17:07:55   作者:tuokuac  
在 MyBatis 中,@Param 注解的作用是为方法参数指定一个在 XML 映射文件或注解 SQL 中引用的名称,对于你的问题,是否可以不写,取决于MyBatis的版本和参数类型,这篇文章给大家介绍MyBatis中的@Param注解,感兴趣的朋友跟随小编一起看看吧

在 MyBatis 中,@Param 注解的作用是为方法参数指定一个在 XML 映射文件或注解 SQL 中引用的名称。对于你的问题,是否可以不写,取决于 MyBatis 的版本和参数类型

情况分析

1. 可以省略的情况(单个基本类型参数)

如果你的 MyBatis 版本是 3.4.1+,且方法只有一个基本类型或简单对象参数(如 Long, String, 自定义对象等),可以省略 @Param
此时 MyBatis 会自动使用参数的实际变量名(regionId)作为引用名。

// MyBatis 3.4.1+ 可以省略
List<ServeResDTO> queryServeListByRegionId(Long regionId);

在 XML 中这样引用:

<select id="queryServeListByRegionId" resultType="com.xxx.ServeResDTO">
    SELECT * FROM serve WHERE region_id = #{regionId}
</select>

2. 必须添加的情况

  • 多参数方法:当有多个参数时,必须使用 @Param 区分
List<Serve> query(@Param("name") String name, @Param("status") Integer status);
  • 集合类型参数:如 @Param("list") List<Long> ids
  • 动态 SQL:在 <if><foreach> 等标签中引用参数
  • 代码可读性:显式声明参数名更清晰,避免编译后参数名丢失的问题(Java 8+ 需加上 -parameters 编译参数才能保留参数名)

建议的最佳实践

写上 @Param("regionId") 是更安全的做法,原因如下:

  1. 编译兼容性:确保即使 Java 编译时未保留参数名(默认情况),也能正常工作
  2. 代码清晰:明确指定 SQL 中使用的参数名
  3. 避免升级风险:项目升级 MyBatis 或修改编译配置时不会出错
  4. 团队协作规范:统一风格,便于维护

所以虽然单个参数时可以省略,但推荐始终加上 @Param这是一种防御性编程的好习惯。

结论:在你的代码中,不写通常也能运行(MyBatis 3.4.1+),但写上更好。

到此这篇关于MyBatis 中的@Param注解的文章就介绍到这了,更多相关MyBatis @Param注解内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • JavaWeb实现简单文件上传功能

    JavaWeb实现简单文件上传功能

    这篇文章主要为大家详细介绍了JavaWeb实现简单文件上传功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-06-06
  • SWT(JFace) FTP客户端实现

    SWT(JFace) FTP客户端实现

    SWT(JFace)小制作:FTP客户端实现
    2009-06-06
  • SpringBoot实现发送验证码功能(图片验证码)

    SpringBoot实现发送验证码功能(图片验证码)

    这篇文章主要介绍了SpringBoot实现发送验证码功能(图片验证码),本次内容主要学习如何做一个发送验证码和识别验证码的功能,需要的朋友可以参考下
    2024-06-06
  • Java语言实现非递归实现树的前中后序遍历总结

    Java语言实现非递归实现树的前中后序遍历总结

    今天小编就为大家分享一篇关于Java语言实现非递归实现树的前中后序遍历总结,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-01-01
  • java的jdk基础知识点总结

    java的jdk基础知识点总结

    在本篇文章里小编给大家整理的是一篇关于java的jdk基础知识点总结内容,有兴趣的朋友们可以学习参考下。
    2021-01-01
  • SpringBoot将所有依赖(包括本地jar包)打包到项目

    SpringBoot将所有依赖(包括本地jar包)打包到项目

    这篇文章主要介绍了SpringBoot将所有依赖(包括本地jar包)打包到项目,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-06-06
  • Mybatis-Plus通用枚举的使用详解

    Mybatis-Plus通用枚举的使用详解

    这篇文章主要介绍了Mybatis-Plus通用枚举的使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • java中Base64字符串出现不合法字符的问题解决

    java中Base64字符串出现不合法字符的问题解决

    非法的base64数据可能导致编码或解码过程出错,本文主要介绍了java中Base64字符串出现不合法字符的问题解决,具有一定的参考价值,感兴趣的可以了解一下
    2024-06-06
  • IDEA远程连接HBase及其Java API实战详解

    IDEA远程连接HBase及其Java API实战详解

    这篇文章主要介绍了IDEA远程连接HBase及其Java API实战详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-04-04
  • Java中的HashMap弱引用之WeakHashMap详解

    Java中的HashMap弱引用之WeakHashMap详解

    这篇文章主要介绍了Java中的HashMap弱引用之WeakHashMap详解,当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止,也不会靠随意回收具有强引用的对象来解决内存不足的问题,需要的朋友可以参考下
    2023-09-09

最新评论