循环迭代 ‹foreach›

Exisi 2021-03-27 07:29:32
Categories: Tags:
  • <foreach> 可以根据传入的参数动态生成循环语句。<foreach>元素通常用于在SQL语句中生成IN条件语句。

 

  • 在集合中的查找学生

示例

<select id="getStudentListByClassIDs" resultMap="studentResultMap">  

SELECT * FROM student as s   

WHERE s.classID IN    

<foreach collection="list" item="classList"  open="(" separator="," close=")">  

#{classList}   

</foreach>      

</select>

 

属性

描述

item

集合中元素迭代时的别名,该参数为必选。

index

list和数组中,index是元素的序号,在map中,index是元素的key,该参数可选

open

foreach代码的开始符号,一般是(close=")"合用。常用在in(),values()时。该参数可选

separator

元素之间的分隔符,例如在in()的时候,separator=","会自动在元素中间用“,“隔开,避免手动输入逗号导致sql错误,如in(1,2,)这样。该参数可选。

close

foreach代码的关闭符号,一般是)open="("合用。常用在in(),values()时。该参数可选。

collection

foreach迭代的对象,作为入参时,

List --------->list

array ------->array

Map -------->没有默认的键。

当然在作为入参时可以使用@Param("keyName")来设置键,设置keyName后,list,array将会失效。

除了入参这种情况外,还有一种作为参数对象的某个字段的时候。举个例子:如果User有属性List ids。入参是User对象,那么这个collection = "ids".如果User有属性Ids ids;其中Ids是个对象,Ids有个属性List id;入参是User对象,那么collection = "ids.id"