首页/ 学科题库/ Mytatis/ 多参数传递
Mytatis 实战教程

多参数传递

2026-05-20 约 8 分钟 juanwangdev

多参数传递

多参数传递有三种主流方式,各自有适用场景。

@Param 注解方式(推荐)

Java
// Mapper 接口
User selectByNameAndEmail(@Param("name") String username, @Param("email") String email);
XML
<select id="selectByNameAndEmail" resultType="com.example.entity.User">
    SELECT * FROM user 
    WHERE username = #{name} AND email = #{email}
</select>

注意:必须使用 @Param 注解命名参数,否则 #{} 无法识别。

POJO 对象方式

Java
// 查询条件对象
public class UserQuery {
    private String username;
    private String email;
    private Integer status;
    // getter/setter 省略
}

// Mapper 接口
List<User> selectByCondition(UserQuery query);
XML
<select id="selectByCondition" resultType="com.example.entity.User">
    SELECT * FROM user 
    WHERE username = #{username} AND email = #{email} AND status = #{status}
</select>

Map 方式

Java
// Mapper 接口
List<User> selectByMap(Map<String, Object> params);

// 调用
Map<String, Object> params = new HashMap<>();
params.put("username", "zhangsan");
params.put("email", "test@example.com");
List<User> users = mapper.selectByMap(params);
XML
<select id="selectByMap" resultType="com.example.entity.User">
    SELECT * FROM user 
    WHERE username = #{username} AND email = #{email}
</select>

三种方式对比

方式适用场景优点缺点
@Param2-3 个参数简洁直观参数多时冗长
POJO多个参数,有业务含义类型安全,可复用需额外创建类
Map参数不确定,动态查询灵活无类型检查,易出错

推荐:参数少用 @Param,参数多且有业务含义用 POJO,避免 Map。

要点总结

  • 多参数传递:@Param、POJO、Map 三种方式
  • @Param 适合少量参数,简洁直观
  • POJO 适合多个参数且有业务含义
  • Map 灵活但无类型检查,不推荐常规使用
想在手机上练这篇的配套题目?
使用微信 卷王开发者小程序/App,首页顶部扫一扫识别下方二维码,即可解锁本讲对应真题与错题本。
了解产品 App
← 上一篇 单参数传递 下一篇 → resultMap 结果映射