Mybatics foreach动态标签的使用

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,为实体类里面定位的值。

posted @ 2019-07-03 14:16  正义的伙伴1994  阅读(445)  评论(0编辑  收藏  举报