关于mapper文件接收参数的问题
一:接口方法只有一个参数:
Product query( String name);
mapper文件接收参数:
select * from product where name = #{随便写}
这里的参数可以随便写,mybatis都可以解析
二:接口方法有多个参数:
Product query( String name, BigDecimal price);
当接口有多个参数时,mybatis会将参数封装成map,key值为param1、param2。。
这里有两种方式:
- 使用默认的key值获取参数:param1、param2。。。
Product query( String name, BigDecimal price);
select * from product where name = #{param1} and price = #{param2}
2.自定义key值获取参数:
Product query(@Param(“name1”) String name, @Param(“price1”) BigDecimal price);
select * from product where name = #{name1} and price = #{price1}
注意:当有多个参数时,不能使用参数名直接获取参数
三:参数为一个对象:
mapper文件通过对象的可读属性获取参数
Product query( Product product);
select * from product where name = #{name} and price = #{price}
注意: 实体类必须有该字段的可读属性,否则报错,不能用product.name或者product.price
四:参数为map
直接通过key获取参数
测试:
Product query(Map<String,Object> map);
select * from product where name = #{name} and price = #{price}
五:传入的参数是集合或者数组:
void add(List pros);
mybatis会自动将集合或者数组转换成map
如果是集合,那么key值 是list,如果是数组,那么key值是array
mapper文件:
接口:
List select(List ids);
测试: