在Mybatis中處理多參數的最佳實踐是使用Map或者自定義對象作為參數傳遞。以下是兩種常用的處理多參數的方式:
public interface UserMapper {
List<User> selectUsersByParams(Map<String, Object> params);
}
<select id="selectUsersByParams" resultType="User">
SELECT * FROM users WHERE
<if test="name != null"> name = #{name} </if>
<if test="age != null"> AND age = #{age} </if>
</select>
調用方式:
Map<String, Object> params = new HashMap<>();
params.put("name", "Alice");
params.put("age", 25);
List<User> users = userMapper.selectUsersByParams(params);
public class UserQuery {
private String name;
private Integer age;
// getters and setters
}
public interface UserMapper {
List<User> selectUsersByParams(UserQuery userQuery);
}
<select id="selectUsersByParams" resultType="User">
SELECT * FROM users WHERE
<if test="name != null"> name = #{name} </if>
<if test="age != null"> AND age = #{age} </if>
</select>
調用方式:
UserQuery userQuery = new UserQuery();
userQuery.setName("Alice");
userQuery.setAge(25);
List<User> users = userMapper.selectUsersByParams(userQuery);
使用Map或自定義對象作為參數傳遞可以方便地處理多個參數,并且能夠更清晰地表達參數之間的關系。同時,可以利用Mybatis的動態SQL功能來動態拼接SQL語句,根據傳入的參數條件進行靈活的查詢。