本文主要是介绍MyBatis中的两种参数传递类型详解(示例代码),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
《MyBatis中的两种参数传递类型详解(示例代码)》文章介绍了MyBatis中传递多个参数的两种方式,使用Map和使用@Param注解或封装POJO,Map方式适用于动态、不固定的参数,但可读性和安...
以下是 MyBATis 中传递多个参数的两种主要方式:
✅ 方式一:使用Map<String, Object>
List<User> search(Map<String, Object> params);
- 优点:灵活,适合动态、不固定的参数(如高级搜索)。
- 缺点:无编译期检查,key 容易拼错,可读性差,难维护。
- 适用:参数多变、临时性场景。
- 使用场景:
场景一:动态查询条件较多且不固定
当你需要构建一个“高级搜索”功能,用户可以任意组合多个筛选条件(比如按姓名、年龄范围、城市、状态等),而且这些条件不是固定的(可能今天加一个字段,明天去掉另一个),这时候用 POJO 反而显得笨重。
场景二:批量操作需要传递多个不同类型的参数
例如,你想根据一组 ID 删除记录,同时记录操作人和操作时间:
场景三:调用存储过程或复杂 SQL,参数结构不规则
有些老系统或 DBA 写的存储过程,入参可能是几十个零散字段,且没有对应的业务对象。此时用 Map 传参更方便。
✅ 方式二:使用@Param注解(或封装 POJO)(推荐)
// 多个参数用 @Param List<User> search(@Parajsm("name") String name, @Param("age") androidInteger age); // 或封装成 POJO(推荐结构稳定时用) List<User> search(UserQuery query);
- 优点:类型安全、IDE 支持、可读性强、易于校验(如
@Valid)。 - 缺点:参数多时方法签名冗长(若不用 POJO);POJO 需额外定义。
- 适用:参数固定、语义清晰、长期维护的业务逻辑。
- **使用场景:**除了上面使用Map的情况,大部分使用
一句话总结:
动态/临时用 Map,固定/正式用 @Param js或 POJO。
能用对象就http://www.chinasem.cn别用 Map —— 代码是给人看的。
在 MyBatis 中,Mapper 接口的方法参数通常有以下几种方式:
- 单个基本类型(如
int,String) - Java Bean(POJO)
@Param注解标注多个参数Map<String, Object>
而 使用 Map 作为参数,通常适用于以下几种典型场景:
Map 是“灵活性”的工具,但牺牲了“可读性”和“安全性”。只在真正需要动态、多变参数时才用它。
到此这篇关于MyBatis中的两种参数传递类型的文章就介绍到这了,更多相关mybatis参数传递类型内容请搜索China编程(www.chinasem.cn)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程China编程(www.chinasem.cn)!
这篇关于MyBatis中的两种参数传递类型详解(示例代码)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!