<select id="getUsersByIdList" parameterType="java.util.List" resultType="User">
SELECT * FROM users
WHERE id IN
<foreach collection="idList" item="id" open="(" separator="," close=")">
#{id}
</foreach>
</select>
在上述例子中:
- collection 属性指定了传递给 <foreach> 的集合或数组的名称。
- item 属性指定了在迭代过程中将集合中的每个元素赋值给的变量名。
- open、separator 和 close 属性分别指定了循环开始时的字符串、元素之间的分隔符和循环结束时的字符串。
例如,如果传递的 idList 参数是 [1, 2, 3],则生成的 SQL 语句将类似于 WHERE id IN (1, 2, 3)。
遍历 Map
如果传递的是一个 Map,可以使用 key 和 value 属性:
<select id="getUsersByMap" parameterType="java.util.Map" resultType="User">
SELECT * FROM users
WHERE
<foreach collection="conditionMap" item="value" index="key" separator=" AND ">
${key} = #{value}
</foreach>
</select>
在上述例子中,conditionMap 是一个 Map,其中键是列名,值是对应的条件值。
需要注意:
- 在使用 <foreach> 时,通常需要指定合适的 separator 属性,以便在拼接 SQL 语句时使用适当的分隔符。
- 在迭代 Map 时,使用 ${key} 和 #{value} 可以在 SQL 语句中引用键和值。
<foreach> 元素是 MyBatis 动态 SQL 的一个重要组成部分,它允许你在查询时更灵活地处理包含多个值的条件。
转载请注明出处:http://www.pingtaimeng.com/article/detail/7022/MyBatis