foreach 中的主要属性为 item,index,collection,open,separator,close
item 表示集合中一个元素迭代时的别名,自己定义,一般为item
index 指定的一个名字,用于表示每次迭代到的位置
open以什么开始
separator每次迭代的分割符号
close表示以什么结束
collection:有三种
分别是 list,array,Map(可以是一个对象,对象里面有一个List的集合,与map是同理)
1:list类型:
ArrayList arrayList=new ArrayList(); arrayList.add("1"); arrayList.add("2"); arrayList.add("3"); arrayList.add("4");
<select id="dynamicForeachTest" resultType="Blog"> select * from t_test where id in <foreach collection="list" index="index" item="item" open="(" separator="," close=")"> #{item} </foreach> </select
2:array类型
int[] ids = new int[] {1,2,3,4};
<select id="dynamicForeach2Test" resultType="Blog"> select * from t_test where id in <foreach collection="array" index="index" item="item" open="(" separator="," close=")"> #{item} </foreach> </select>
3:Map或者对象类型
public class TestEntity { private List<String> nameList; private String id; public List<String> getNameList() { return nameList; } public void setNameList(List<String> nameList) { this.nameList = nameList; } public String getId() { return id; } public void setId(String id) { this.id = id; } }
TestEntity testEntity=new TestEntity(); List<String> nameList = testEntity.getNameList(); nameList.add("1"); nameList.add("2"); nameList.add("3"); nameList.add("4");
<select id="dynamicForeach3Test" resultType="Blog"> select * from t_blog where title like "%"#{title}"%" and id in <foreach collection="nameList" index="index" item="item" open="(" separator="," close=")"> #{item} </foreach> </select>
注意此时collection的值为nameList,为实体类里面定位的值。