Mybatis中遍历List内容进行动态SQL拼接
这个方法用于根据一组 dishIds
(1,2,3,4)查询对应的另一张表的内容中的 setmeal_id
。通过使用了 MyBatis 的 <foreach>
标签来遍历传入的集合,并将 dishIds
(1,2,3,4)集合中的每个 dishId
插入到 SQL 查询的 IN
子句中来通过dishIds查询另一张表的主键setmeal_id
。
<select id="getSetmealIdsByDishIds" resultType="java.lang.Long">
select setmeal_id from setmeal_dish where dish_id in
<foreach collection="dishIds" item="dishId" separator="," open="(" close=")">
#{dishId}
</foreach>
</select>
<select>
标签:定义了 MyBatis 的查询映射,id="getSetmealIdsByDishIds"
是方法名,resultType="java.lang.Long"
表示返回类型为 Long
。
<foreach>
标签:用于遍历传入的 dishIds
集合,将其生成 SQL 的 IN
子句。
collection="dishIds"
:指定传入的集合名称。
item="dishId"
:表示集合中的每一项在循环时的变量名。
separator=","
:每个 dishId
之间用逗号分隔。
open="(" close=")"
:表示生成的 SQL 中 IN
子句的开始和结束。
功能:
这个 SQL 查询会生成如下格式的 SQL 语句:
SELECT setmeal_id FROM setmeal_dish WHERE dish_id IN (1, 2, 3);