mybatis @Param 注解

在 MyBatis 中,@Param 注解用于将方法参数绑定到 SQL 查询语句中的参数上。具体来说,当你在 Mapper 接口中定义方法时,@Param 注解可以帮助你指定参数的名称,以便在 SQL 映射文件中使用这些名称。

使用 @Param 注解的原因

当你在 MyBatis 的 Mapper 接口中定义一个方法并希望将方法的参数传递给 SQL 查询时,@Param 注解允许你为这些参数指定名称。这个名称可以在 XML 映射文件中的 SQL 语句中引用。

示例

假设你有一个 Mapper 接口方法如下:


import org.apache.ibatis.annotations.Param;
import java.util.List;

public interface MyMapper {
    List selectList(@Param("query") P p);
}

在这个方法中,@Param("query") 是一个注解,它将 P p 参数绑定到名为 query 的 SQL 参数上。

对应的 XML 映射文件

在 MyBatis 的 XML 映射文件中,你可以这样引用这个参数:

在这个 SQL 语句中,#{query.someField} 用于引用 query 参数对象的 someField 属性。

解释

  • @Param("query") 指定了参数的名称为 query
  • 在 SQL 映射文件中,#{query.someField} 通过 query 这个名称来访问 P 对象的 someField 属性。

如果你没有使用 @Param 注解,MyBatis 默认会将方法参数命名为 param1, param2,依此类推,这可能会使得 SQL 映射文件中的参数引用变得不够清晰和容易管理。

多参数方法

如果你的 Mapper 方法有多个参数,你需要为每个参数指定一个 @Param 注解。例如:


import org.apache.ibatis.annotations.Param;
import java.util.List;

public interface MyMapper {
    List selectList(@Param("query") P p, @Param("limit") int limit);
}

对应的 XML 映射文件中,你可以这样引用多个参数:


在这个例子中,#{query.someField}#{limit} 分别对应于 query 参数对象的 someField 属性和 limit 参数值。

总结

  • @Param 注解用于指定方法参数在 SQL 映射文件中的名称。
  • 这使得在 SQL 映射文件中引用参数变得更直观。
  • 对于多个参数的方法,每个参数都需要一个 @Param 注解。

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