在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
属性来检查是否为空。
-