MyBatis<foreach>标签的用法及多种循环方式
•
数据库
foreach 的主要作用在构建 in 条件中,它可以在 sql 语句中进行迭代一个集合。foreach 元素的属性主要有 collection,item,separator,index,open,close。
| 属性 | 描述 |
|---|---|
| collection | 指定要遍历的集合。表示传入过来的参数的数据类型。该属性是必须指定的,要做 foreach 的对象。 |
| index | 索引,index 指定一个名字,用于表示在迭代过程中,每次迭代到的位置。遍历 list 的时候 index 就是索引,遍历 map 的时候 index 表示的就是 map 的 key,item 就是 map 的值。 |
| item | 表示本次迭代获取的元素,若collection为List、Set或者数组,则表示其中的元素;若collection为map,则代表key-value的value,该参数为必选 |
| open | 表示该语句以什么开始,最常用的是左括弧’(’,注意:mybatis会将该字符拼接到整体的sql语句之前,并且只拼接一次,该参数为可选项 |
| separator | 表示在每次进行迭代之间以什么符号作为分隔符。select * from tab where id in(1,2,3)相当于1,2,3之间的”,” |
| close | 表示该语句以什么结束,最常用的是右括弧’)’,注意:mybatis会将该字符拼接到整体的sql语句之后,该参数为可选项 |
1.查询的时候:
select , ${colstr}
from ${tableName}
where del_flag = 0 and id_bp_step = #{idBpStep} and id in
#{id}
order by id
SELECT *
FROM devcie
WHERE 1=1
0">
AND id IN
#{item}
SELECT *
FROM devcie
WHERE 1=1
0">
AND
#{item}
SELECT *
FROM devcie
WHERE 1=1
AND id IN
#{item}
2.批量更新的时候
UPDATE device
SET
name = #{item.name},
no = #{item.no}
WHERE
id = #{item.id}
UPDATE device
SET
del_flag = 1
WHERE 1=1
AND id IN
#{item}
update ${tableName} set DEL_FLAG = 1, deleteor = #{deleteor} where id in
#{id}
3.批量插入的时候
INSERT INTO
device
(id,name,no)
VALUES
( #{item.id}, #{item.name}, #{item.no} )
INSERT INTO
device
(id,name,no)
VALUES
( #{item.id}, #{item.name},#{item.no} )
insert ignore into ${tableName} (AIP_ID, BOX_ID) values
(#{id}, #{boxId})
本文来自网络,不代表协通编程立场,如若转载,请注明出处:https://net2asp.com/458f393940.html
