属性 | 说明 |
---|---|
item | 表示集合中每一个元素进行迭代时的别名, |
index | 指 定一个名字,用于表示在迭代过程中,每次迭代到的位置, |
open | 表示该语句以什么开始, |
separator | 表示在每次进行迭代之间以什么符号作为分隔符, |
close | 表示以什么结束。 |
List 类型的我都配置了别名list,参数是 List<Article>
,Article 是我自己定义的实体类
<!-- 获取标签文章列表 --><select id="getArticleList" parameterType="list" resultType="pm"> SELECT * from blog_article a where a.article_id in <foreach item="item" collection="list" index="index" open="(" separator="," close=")"> #{item.article_id} </foreach> and isdel = 0 order by a.create_time desc,a.update_time desc</select>
<!-- 批量新增--><insert id="batchSaveArticleLabel" parameterType="list"> insert into blog_article_label( article_id, label_id ) values <foreach collection="list" item="item" index="index" separator="," > ( #{item.article_id}, #{item.label_id} ) </foreach></insert>
select * from table<where> <foreach collection="list" item="item" index="index" separator="or"> name like '%${item}%' </foreach></where>
List
,如果是 String[]
这种的就是把collection 的值改为array,如下demo<delete id="getArticleList" parameterType="String"> DEKETE from blog_article a where a.article_id in <foreach collection="array" index="index" item="item" open="(" separator="," close=")"> #{item} </foreach></delete>
参数是 Map<String,Object>
,我下面写map 是因为配置了别名
Java 代码是这样的:
Map<String,Object> map = new HashMap<>();String[] ids = {"1","2","3"};map.put("content","修改的内容");map.put("ids",ids);
mapper 文件
<update id="update" parameterType="map"> UPDATE table SET content="#{content}" WHERE id in <foreach collection="ids" index="index" item="item" open="(" separator="," close=")"> #{item} </foreach></update>
<update id="updateUserChildNum" parameterType="list"> UPDATE usr_relation_umbrella SET child_number = CASE user_id <foreach collection="list" item="item"> WHEN #{item.userId} THEN #{item.childNumber} </foreach> END WHERE user_id IN <foreach item="item" collection="list" index="index" open="(" separator="," close=")"> #{item.userId} </foreach></update>
UPDATE categories SET display_order = CASE id WHEN 1 THEN 3 WHEN 2 THEN 4 WHEN 3 THEN 5 END, title = CASE id WHEN 1 THEN 'New Title 1' WHEN 2 THEN 'New Title 2' WHEN 3 THEN 'New Title 3' ENDWHERE id IN (1,2,3)