MyBatis中的两种参数传递类型详解(示例代码)
以下是 MyBatis 中传递多个参数的两种主要方式:
✅ 方式一:使用Map<String, Object>
List<User> search(Map<String, Object> params);
- 优点:灵活,适合动态、不固定的参数(如高级搜索)。
- 缺点:无编译期检查,key 容易拼错,可读性差,难维护。
- 适用:参数多变、临时性场景。
- 使用场景:
场景一:动态查询条件较多且不固定
当你需要构建一个“高级搜索”功能,用户可以任意组合多个筛选条件(比如按姓名、年龄范围、城市、状态等),而且这些条件不是固定的(可能今天加一个字段,明天去掉另一个),这时候用 POJO 反而显得笨重。
场景二:批量操作需要传递多个不同类型的参数
例如,你想根据一组 ID 删除记录,同时记录操作人和操作时间:
场景三:调用存储过程或复杂 SQL,参数结构不规则
有些老系统或 DBA 写的存储过程,入参可能是几十个零散字段,且没有对应的业务对象。此时用 Map 传参更方便。
✅ 方式二:使用@Param注解(或封装 POJO)(推荐)
// 多个参数用 @Param
List<User> search(@Param("name") String name, @Param("age") Integer age);
// 或封装成 POJO(推荐结构稳定时用)
List<User> search(UserQuery query);- 优点:类型安全、IDE 支持、可读性强、易于校验(如
@Valid)。 - 缺点:参数多时方法签名冗长(若不用 POJO);POJO 需额外定义。
- 适用:参数固定、语义清晰、长期维护的业务逻辑。
- **使用场景:**除了上面使用Map的情况,大部分使用
📌 一句话总结:
动态/临时用 Map,固定/正式用 @Param 或 POJO。
能用对象就别用 Map —— 代码是给人看的。
在 MyBatis 中,Mapper 接口的方法参数通常有以下几种方式:
- 单个基本类型(如
int,String) - Java Bean(POJO)
@Param注解标注多个参数Map<String, Object>
而 使用 Map 作为参数,通常适用于以下几种典型场景:
Map 是“灵活性”的工具,但牺牲了“可读性”和“安全性”。只在真正需要动态、多变参数时才用它。
到此这篇关于MyBatis中的两种参数传递类型的文章就介绍到这了,更多相关mybatis参数传递类型内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
idea集成shell运行环境以及shell输出中文乱码的解决
这篇文章主要介绍了idea集成shell运行环境以及shell输出中文乱码的解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2024-08-08
java ThreadLocal线程局部变量常用方法使用场景示例详解
这篇文章主要介绍了为大家java ThreadLocal线程局部变量常用方法使用场景示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2023-07-07
解决IDEA错误 Cause: java.sql.SQLException: The server time zone
这篇文章主要介绍了解决IDEA错误 Cause: java.sql.SQLException: The server time zone value的问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2020-08-08


最新评论