Mybatis参数传递测试与总结

Mybatis参数传递

一.单参数传递

接口中方法声明
在这里插入图片描述
对应的mapper
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
占位符中写任意参数名都可以传参成功
Mybatis对于单参数而言,是直接进行赋值的,不考虑具体的参数名对应关系

二.多参数传递

1.Mybatis对于多参数传递的默认支持

在这里插入图片描述
如果mapper中参数直接写成接口中的形参,则会报错
在这里插入图片描述
在这里插入图片描述

从报错中可以看出 会将对应的参数名转化为索引(arg0,arg1····)或是参数个数(param1,param2···)
本例中 username对应arg0或param1 gender对应arg1或param2

正确方式如下:
在这里插入图片描述

2.自定义参数传递

如果不想使用上述Mybatis对于多参数的默认转化方式,有以下三种自定义方式

(1) 封装pojo类

将字段封装为pojo类
形参直接写成类对象
在这里插入图片描述
在mapper中参数即可直接写成类中的字段名
在这里插入图片描述
在这里插入图片描述

(2)封装Map

参数个数少时,且没有javaBean,可以将参数封装为Map进行传参

在这里插入图片描述
在这里插入图片描述

注意:
mapper中的参数必须写成Map中对应的Key值 使用#{key}取出对应的value,否则传递失败

在这里插入图片描述

在这里插入图片描述

(3)@param注解

语法@param(value= “”)
当使用@param注解时,MyBatis底层会自动将形参封装为Map,Map中的Key即为@param中的value值

在这里插入图片描述
在mapper中,同上述手动封装Map一致,使用#{Key}
在这里插入图片描述

多参数传递小结:

1.map传递参数,业务可读性差
2.参数个数n<5 使用@param
3.n>5 使用javaBean

三.参数为Collection、List、Array

1.参数为Collection

Mybatis会自动将Collection转化为Map Map的Key为collection

在这里插入图片描述

在这里插入图片描述

2.参数为List

如果参数为List接口,则占位符中既可以为collection 也可以写成list
在这里插入图片描述

在这里插入图片描述

3.参数为Array

同样转化为Map key为array 不可以使用collection
在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值