这样写就ok啦!注意:collection必须为list因为mybatis官方文档中写道:
( 你可以传递一个 List 实例或者数组作为参数对象传给 MyBatis。当你这么做的时 候,MyBatis 会自动将它包装在一个 Map 中,用名称在作为键。List 实例将会以“list” 作为键,而数组实例将会以“array”作为键。)
以下内容添加日期2019-5-15
为什么这篇文章写这么烂还有这么多人看?而我的其他文章没人看啊!
正文
以上对<foreach/>
的说明是基于list
的的,下面来讲下对数组的支持。
XXXMapper.java文件内容如下:
int insertOrder(OrderInfo[] orders);
与之对应的mapper XML配置文件:
<insert id = "insertOrder">
INSERT INTO order (
money,
remark
)
VALUES
<foreach collection = "array" item = "item" separator = ",">
#{item.money},
#{item.remark}
</foreach>
</insert>
说明:
- item是引用的名称,提供给
#{}
使用。 - separator是每条item的分隔符。
注意点:
- 还有一个地方需要注意的是如果你的循环对象使用的
@Param("extraName")
注解或者你的list/数组包含在一个对象中,则不能使用list
或array
作为collection的参数(即,collection = "array"
或collection = "list"
),而是需要使用@Param
的值或对象的引用名称。 - 如果你的
list
或array
是一个简单类型可以直接这样使用,如下:
XXXMapper.java文件内容如下:
int insertOrder(String[] orders);
与之对应的mapper XML配置文件:
<insert id = "insertOrder">
INSERT INTO order (
money
)
VALUES
<foreach collection = "array" item = "item" separator = ",">
#{item}
</foreach>
</insert>