在MyBatis中,传递多个参数可以通过不同的方式实现。下面列举了几种常见的方法:
1. 使用@Param注解:可以通过在Mapper接口的方法参数上使用`@Param`注解来指定参数的名称。例如:
```java
@Select("SELECT * FROM user WHERE username = #{name} AND age = #{age}")
User getUserByNameAndAge(@Param("name") String name, @Param("age") int age);
```
在上述例子中,`@Param`注解用于给每个参数指定一个名称,然后在SQL语句中使用参数名称进行引用。
2. 使用Map或者POJO对象:可以将多个参数封装到一个Map或者POJO对象中,然后将该对象作为方法的参数传入。例如:
```java
@Select("SELECT * FROM user WHERE username = #{name} AND age = #{age}")
User getUserByMap(Map<String, Object> params);
```
或者使用POJO对象:
```java
public class UserQuery {
private String name;
private int age;
// getter and setter
}
@Select("SELECT * FROM user WHERE username = #{name} AND age = #{age}")
User getUserByQuery(UserQuery query);
```
在上述例子中,Map中的key值或者POJO对象中的属性名需要和SQL语句中的参数名一致。
3. 使用索引方式:可以直接通过索引来引用传递的参数。例如,使用`#{0}`表示第一个参数,`#{1}`表示第二个参数,依此类推。
```java
@Select("SELECT * FROM user WHERE username = #{0} AND age = #{1}")
User getUserByIndex(String name, int age);
```
在上述例子中,`#{0}`表示name参数,`#{1}`表示age参数。
需要注意的是,多个参数的传递方式在不同的场景下可以灵活选择,根据实际情况选择合适的方式。使用`@Param`注解可以更加直观地指定参数名称,使用Map或POJO对象可以将相关参数封装起来,使用索引方式可以方便地按照参数的顺序进行引用。