mybatis-foreach标签的使用-sql循环

今天敲代码的时候用到了,在此记录一下。 


foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合。

foreach元素的属性主要有 itemindexcollectionopenseparatorclose

    item表示集合中每一个元素进行迭代时的别名, 

    index指 定一个名字,用于表示在迭代过程中,每次迭代到的位置,

    open表示该语句以什么开始, 

    separator表示在每次进行迭代之间以什么符号作为分隔 符,

    close表示以什么结束,

    collection表示要循环的集合。


在使用foreach的时候最关键的也是最容易出错的就是collection属性,该属性是必须指定的,但是在不同情况 下,该属性的值是不一样的,主要有以下3种情况:

  1. 如果传入的是单参数且参数类型是一个List的时候,collection属性值为list

  2. 如果传入的是单参数且参数类型是一个array数组的时候,collection的属性值为array

  3. 如果传入的参数是多个的时候,我们就需要把它们封装成一个Map了,当然单参数也可以封装成map,实际上如果你在传入参数的时候,在breast里面也是会把它封装成一个Map的,map的key就是参数名,所以这个时候collection属性值就是传入的List或array对象在自己封装的map里面的key

  


我们来看看以上三种情况的示例:

  1.单参数List的类型:

1      update  GOC_FAULT_IMPROVE_MEASURE a set
2         a.use_flag = 0 ,
3         a.operator = #{operator} ,
4         a.operate_time = sysdate
5         where a.id in
6         <foreach collection="improveList" item="improveId" open="(" separator="," close=")">
7               #{improveId}
8         </foreach>

 未完待续。。。

以下是mybatis官网:

https://mybatis.org/mybatis-3/zh/index.html

原文地址:https://www.cnblogs.com/Oxyy/p/14518006.html