在 MyBatis 中,如果 Mapper 接口的方法有多个参数,但没有使用 @Param 注解,默认情况下,MyBatis 会将这些参数放入一个 Map 中,键名为 param1param2 等,或者使用索引 01 等来访问。以下是具体的使用方法和注意事项。


一、Mapper 接口方法

假设有一个 Mapper 接口方法,包含多个参数但没有使用 @Param 注解:


public interface UserMapper {
    User selectUserByNameAndAge(String name, int age);
}


二、XML 文件中的参数引用

在 XML 文件中,可以通过以下方式引用参数:

1. 使用 param1param2 等

MyBatis 会自动为参数生成键名 param1param2 等:


xml 代码解读
<select id="selectUserByNameAndAge" resultType="User">  SELECT * FROM user WHERE name = #{param1} AND age = #{param2}
</select>

2. 使用索引 01 等

也可以通过索引 01 等来引用参数:


xml 代码解读
<select id="selectUserByNameAndAge" resultType="User">  SELECT * FROM user WHERE name = #{0} AND age = #{1}
</select>

三、注意事项

  1. 可读性问题
  2. 参数顺序问题
  3. 推荐使用 @Param 注解