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 @   正义的伙伴1994  阅读(447)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
点击右上角即可分享
微信分享提示