将集合作为参数的场景是比较常见的,大多都是配合 MySQL 中的`in`来使用。本文主要内容引用自 MyBatis 的官方文档。
一、使用 MyBatis 的 foreach 标签
foreach 标签的功能非常强大,它允许你指定一个集合,声明可以在元素体内使用的集合项(item)和索引(index)变量。它也允许你指定开头与结尾的字符串以及集合项迭代之间的分隔符。这个元素也不会错误地添加多余的分隔符,看它多智能!
<select id="selectPostIn" resultType="domain.blog.Post">
SELECT *
FROM POST P
WHERE ID in
<foreach collection="list" item="item" index="index" open="(" separator="," close=")">
#{item}
</foreach>
</select>
- collection:用于指定你要遍历的参数,你可以将任何可迭代对象(如 List、Set 等)、Map 对象或者数组对象作为该参数。
- 其他说明:你可以将任何可迭代对象(如 List、Set 等)、Map 对象或者数组对象作为集合参数传递给 foreach的collection。当使用可迭代对象或者数组时,index 是当前迭代的序号,item 的值是本次迭代获取到的元素。当使用 Map 对象(或者 Map.Entry 对象的集合)时,index 是键,item 是值。