MyBatis中的两种参数传递类型详解(示例代码)
作者:SadSunset
文章介绍了MyBatis中传递多个参数的两种方式,使用Map和使用@Param注解或封装POJO,Map方式适用于动态、不固定的参数,但可读性和安全性较差,@Param注解或POJO方式类型安全、可读性强,具体哪种方式好用,一起跟随小编学习下吧
以下是 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参数传递类型内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
