Mybatis参数传递规则
1.单值传参
void deleteObject(String name)
Mybatis的源码中要求单值传参,取值时通过下标的方式取值(取值的参数名可以随意)
2.多值传参
void deleteObject(String name,String sex)
Mybatis高版本的源码中做了规定,自动将多值转换成单值(封装成Map集合,K-V结构),上例中封装为map(“name”,name),map(“sex”,sex)
3.在映射配置文件中,根据参数传递格式,采用对应的方式变量
1).单值传参 Array类型 collection=“array”
List类型 collection=“list”
@RequestMapping("delete")
public SysResult deleteItem(Long[] ids) {
itemService.deleteItem(ids);
return SysResult.success();
}
<delete id="deleteItem">
delete from tb_item where id in (
<foreach collection="array" item="id" separator=",">
#{id}
</foreach>
)
</delete>
2).单值传参 map集合 collection=“map中的key”
@RequestMapping("{status}")
public SysResult reshelfItem(@PathVariable Integer status, /*@Param("ids")*/ Long[] ids) {
itemService.updateItemStatus(status, ids);
return SysResult.success();
}
<update id="updateItemStatus">
update tb_item set status=#{status},updated=now() where id in (
<foreach collection="ids" item="id" separator=",">
#{id}
</foreach>
)
</update>