全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页
📅 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 灵活但无类型检查,不推荐常规使用

📝 发现内容有误?点击此处直接编辑

← 上一篇 基本类型结果集
下一篇 → 自动映射与驼峰转换
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库