在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语句,根据传入的参数条件进行灵活的查询。