自学内容网 自学内容网

@Param注解



@Param详解-CSDN博客

在 MyBatis 中,使用与不使用 @Param 注解会对 Mapper 接口方法的参数映射产生影响。下面是两种方式的对比:

不使用 @Param 注解

示例代码:

void insertUser(User user);

  • 参数使用:直接将 User 对象作为方法参数。
  • XML 文件引用:在 Mapper XML 中,可以使用 #{} 占位符来引用 User 对象的属性,如:
  • INSERT INTO users (id, name) VALUES (#{id}, #{name})

使用 @Param 注解

示例代码:

void insertUser(@Param("user") User user);

  • 参数使用:使用 @Param 注解来明确指定参数的名称,这里指定了 user 作为参数名。
  • XML 文件引用:在 Mapper XML 中,可以通过指定的名称来引用属性,如:
  • INSERT INTO users (id, name) VALUES (#{user.id}, #{user.name})

优势与总结

  • 可读性和可维护性:使用 @Param 注解可以提高代码的可读性和可维护性。参数名称与占位符一致,使得代码更加清晰,便于理解。
  • 避免错误:通过明确指定参数名,可以避免因参数顺序变化或方法重载导致的错误,确保参数引用的准确性。
  • 使用灵活性:当方法有多个参数时,使用 @Param 注解是非常必要的,因为不使用时,MyBatis 只能通过位置来识别参数,而使用 @Param 则可以通过名称来访问。

总结

  • 不使用 @Param:简单直接,但在方法重载和参数顺序变化时易出错。
  • 使用 @Param:提高了可读性和维护性,确保参数引用的一致性,特别适合多个参数的情况。

--------------------------------------------------------------------------------

@Param注解_param注解官方文档-CSDN博客

小结;Mybatis无论是传单个参数,还是传递多个参数,没有必要使用@Param注解啊
使用@param 注解增添了不少代码不说,还容易导致错误,尤其是在 mapper 文件中(paraterType 属性)

在使用 JavaBean 作为对象时,确实在编写 SQL 语句时有一些特定的要求和注意事项。以下是对这段内容的简要总结和说明:

使用 JavaBean 的情况

  • 指定参数类型:在 Mapper XML 文件中,使用 JavaBean 作为参数时,必须指定参数类型,例如:

    <insert id="insertCommodity" parameterType="com.ljq.cs.entity.Commodity">

    这告诉 MyBatis 该方法接收的参数类型是 Commodity 类。

  • 引用属性:在 SQL 语句中,引用 JavaBean 的属性时,必须使用完整的路径,如:

    VALUES (#{commodity.id}, #{commodity.name})

    这里的 commodity 是 JavaBean 对象的变量名,idname 是其属性。这种方式可以避免参数类型不匹配的异常。

不使用 JavaBean 的情况

  • @Param 注解:如果没有使用 JavaBean,而是单独的参数(比如字符串或其他基本类型),在 SQL 语句中引用参数时,必须与 @Param 注解中定义的名称一致。例如:

    void insertUser(@Param("username") String username);

  • SQL 语句引用:在 SQL 语句中需要使用 @Param 定义的名称,如:

    VALUES (#{username})

    这样才能确保 MyBatis 正确地匹配参数,避免出现参数类型不匹配的异常。

总结

2. @param 在 Java 文档注释中的用法

在 Java 文档注释(Javadoc)中,@param 是一种用于描述方法参数的注释标记,帮助开发者理解代码的意图。它不会影响代码的运行,只是在生成 API 文档时提供说明,供开发者参考。

示例:

 

/**

* 更新用户信息 *

* @param id 用户ID

* @param username 用户名

*/

public void updateUser(int id, String username) { // 方法实现 }

Java 文档注释中的 @param 作用:

总结区别:

MyBatis 的 @Param 是运行时实际生效的,而 Java 的 @param 只是代码注释,不会影响程序的运行。

  • JavaBean 使用:需要在 XML 中明确指定参数类型,并且在 SQL 中引用属性时使用完整的对象名称。
  • 非 JavaBean 使用:必须确保 SQL 中的占位符名称与 @Param 注解中的名称一致,以确保正确的参数映射。
  • ----------------------------------------------------------
  • @param 注解在 MyBatis 和 Java 文档注释中的用法有明显区别,分别用于不同的场景和目的:

    1. @param 在 MyBatis 中的用法

    在 MyBatis 中,@Param 注解用于为 SQL 参数指定名称。MyBatis 需要用这个名称在 SQL 语句中进行参数的匹配,特别是在多参数方法中,通过 @Param 注解可以明确标识每个参数的名称,避免出现顺序或匹配问题。

    示例:

    public interface UserMapper { void updateUser(@Param("id") int id, @Param("username") String username); }

    在 Mapper XML 中:

    <update id="updateUser"> UPDATE users SET username = #{username} WHERE id = #{id} </update>

    MyBatis 中的 @Param 作用:

  • 给参数命名:确保 SQL 中引用的参数名与 Java 方法中的参数对应。
  • 用于多参数方法:当方法有多个参数时,@Param 明确指定每个参数的名称,避免参数混淆。
  • 提高可读性:通过命名参数,代码更具可读性,SQL 语句与方法签名清晰对应。
  • 描述参数:解释参数的用途,以便阅读代码的人更容易理解参数的含义和用法。
  • 生成文档:可以通过工具(如 Javadoc)生成方法的使用说明,供开发者参考。
  • 不影响代码执行:这种 @param 只是注释信息,对代码逻辑没有任何影响。
  • MyBatis 的 @Param:用于 SQL 参数映射,帮助 MyBatis 将方法中的参数与 SQL 语句中的占位符匹配。
  • Java 文档注释中的 @param:用于 代码注释,帮助解释方法参数的用途,提高代码可读性,生成 API 文档。

原文地址:https://blog.csdn.net/qq_52122048/article/details/142878094

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!