单个参数
- 可以接受基本类型,对象类型,集合类型的值
- MyBatis 可直接使用这个参数,不需要经过任何处理
多个参数
- 任意多个参数,都会被 MyBatis 重新包装成一个 Map 传入
- Map 的 key 是 param1,param2…,值就是参数的值
@param命名参数
- 为参数使用 @Param 起一个名字,MyBatis 就会将这些参数封装进 map 中,key 就是我们自己指定的名字
POJO
- 当这些参数属于我们业务 POJO 时,我们直接传递 POJO
Map
- 我们也可以封装多个参数为 map,直接传递
参数传递源码分析
- 会把参数给放到一个数组当中,如果一个参数, 内部处理时,会自动把该参数范围
- 如果是多个参数,内部会做判断
- 判断是否有 @param 注解
如果没有
- 没有注解的话, 就直接使用 arg0 arg1… 为 key 放到 map 中,并且还会以 param1 和 param2… 为 key 放一份到map 中
如果有
- 如果有注解的话,会使用注解当中的值,替换掉默认的 arg0 和 arg1,使用 @param 中的值,做为 key 放到一个 map 当中,并且还会以 param1 和 param2… 为 key 放一份到 map 中