MyBatis参数传递
MyBatis参数传递
MyBatis接口方法中可以接收各种各样的参数,MyBatis底层对于这些参数进行不同的封装处理方式
- 单个参数:
- POJO类型:直接使用, 属性名 和 参数占位符名称一致
- Map集合: 直接使用,键名 和 参数占位符名称一致
- Collection:封装为Map集合,可以使用@Param注解,替换Map集合中默认的arg键名
map.put("arg0", collection集合);
map.put("collection", collection集合);
- List: 封装为Map集合,可以使用
@Param
注解,替换Map集合中默认的arg键名map.put("arg0", list集合);
map.put("collection", list集合);
map.put("list", list集合);
- Array: 封装为Map集合,可以使用
@Param
注解,替换Map集合中默认的arg键名map.put("arg0", 数组);
map.put("collection", 数组);
- 其他类型:
- 多个参数:封装为Map集合,一个参数对应两个不同的键,可以通过这两个键获取参数的值。可以使用@Param注解,替换Map集合中默认的arg键名
map.put("arg0", 参数值1)
map.put("arg1", 参数值2)
map.put("param1", 参数值1)
map.put("param2", 参数值2)
MyBatis提供了ParamNameResolver
类来进行参数封装
建议:将来都使用@Param注解来修改Map集合中默认的键名,并使用修改后的名称来获取值,这样可读性更高。