在MyBatis中,`<foreach>`标签用于处理集合或数组类型的参数,以便在SQL语句中动态生成`IN`子句或其他需要遍历集合的场景。以下是`array`和`list`在SQL中的`<foreach>`写法总结。
sql
<if test="taskIds != null and taskIds.length > 0">
and `task_id` IN
<foreach item="taskId" collection="taskIds" open="(" separator="," close=")">
#{taskId}
</foreach>
</if>
需要注意就两点
1.collection
数组:collection="array"
列表:collection="list"
也可以写成collection="taskIds",
collection="taskIds" :表示传入的参数是一个数组或集合,名为taskIds。MyBatis会遍历这个集合中的每个元素。
2.if判断
list才可以用isEmpty(),array不能使用isEmpty(),
list一般用:<if test="taskIds != null and taskIds.length > 0">
数组一般用:<if test="taskIds != null and !taskIds.isEmpty()">

注意事项
-
collection属性的值:-
如果传入的是数组,
collection应该是"array"。 -
如果传入的是列表,
collection应该是"list"。
-
-
isEmpty()的使用:-
只有在传入的参数是
List或其他集合类型时,才能使用isEmpty()方法。 -
如果传入的是数组,必须使用
length属性来检查是否为空。
-