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