foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合。 foreach元素的属性主要有 item,index,collection,open,separator,close。 item集合中每一个元素进行迭代时的别名, index表示在迭代过程中,每次迭代到的位置, open该语句以什么开始, separator在每行数据之间以什么符号作为分隔符,有 union、union all、 逗号 close以什么结束 在使用foreach的时候最关键的也是最容易出错的就是collection属性, 该属性是必须指定的,但是在不同情况 下,该属性的值是不一样的,
例子:假如传入的list只有两条数据
<insert id="insertNaRulePara" parameterType="ArrayList" >
insert into NA_RULE_PARA(
RULE_ID,
PARA_ID,
PARA_TYPE_ID
)
VALUES
<foreach collection="list" item="item" index="index" separator="," >
(
#{item.ruleId},
#{item.paraId},
1
)
</foreach>
</insert>
separator="," 这里以逗号作为分隔符,
注意,不同数据库适应的分隔符不同。比如:postgresql 不适应 union,nuion all 分隔符。
后台实际执行的sql如下,同时插入两条(如果list多条,values后面继续拼接上数据)
insert into NA_RULE_PARA( RULE_ID, PARA_ID, PARA_TYPE_ID ) VALUES ( 4, 2022, 1 ) , ( 5, 2023, 1 )
|