@Param注解
在 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
:提高了可读性和维护性,确保参数引用的一致性,特别适合多个参数的情况。
--------------------------------------------------------------------------------
小结;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 对象的变量名,id
和name
是其属性。这种方式可以避免参数类型不匹配的异常。
不使用 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)!