<foreach>元素中collection=list改成collection=array

简介: <foreach>元素中collection=list改成collection=array
<select id="findCustomerByIds" parameterType="List" resultType="customer">
           select * from t_customer where id in
            <foreach item="id" index="index" collection="array" 
                            open="(" separator="," close=")">
                   #{id}
            </foreach>
</select>



当collection改成array时候  改成Integer[] array = new Integer[] {};

@Test
  public void findCustomerByIdsTest() throws Exception{
  
    SqlSession  sqlSession = MyBatisUtils.getSession();
//    List<Integer> ids = new ArrayList<Integer>();
//    ids.add(1);
//    ids.add(2);
     Integer[] array = new Integer[] {1, 2, 3, 4};
     List<Customer> customers =         
         sqlSession.selectList("com.wy.mapper.CustomerMapper.findCustomerByIds", array);
    
     for(Customer customer : customers) {
       System.out.println(customer);
     }
    
    sqlSession.close();
  }

在 MyBatis 中,`<foreach>` 元素通常用于在 SQL 语句中迭代集合的元素。当 `collection` 属性的值是一个 List 类型时,`<foreach>` 会遍历 List 中的元素。如果你要遍历的是数组,需要将 `collection` 属性的值改为数组名。

以下是从 List 改为数组的示例:

假设原始的 SQL 语句是这样的:

```xml

<select id="selectUsersByIds" parameterType="java.util.List" resultType="User">

 SELECT * FROM users WHERE id IN

 <foreach item="item" index="index" collection="ids" open="(" separator="," close=")">

   #{item}

 </foreach>

</select>

```

将其中的 `collection` 从 `ids`(List)改为 `array`(数组):

```xml

<select id="selectUsersByIds" parameterType="int[]" resultType="User">

 SELECT * FROM users WHERE id IN

 <foreach item="item" index="index" collection="array" open="(" separator="," close=")">

   #{item}

 </foreach>

</select>

```

在这个例子中,`parameterType` 设置为 `int[]` 表示传入的参数是一个整数数组。同时,`collection` 设置为 `array`,表示在 SQL 中使用数组进行迭代。

请根据你的实际情况调整参数类型、SQL 语句和其他属性。这只是一个简单的示例,实际场景可能需要根据具体情况进行更灵活的配置。


相关文章
|
2月前
|
算法
你对Collection中Set、List、Map理解?
你对Collection中Set、List、Map理解?
32 5
|
3月前
|
索引
【Qt 学习笔记】Qt常用控件 | 多元素控件 | List Widget的说明及介绍
【Qt 学习笔记】Qt常用控件 | 多元素控件 | List Widget的说明及介绍
324 3
|
4月前
|
NoSQL Java Redis
Redis09-----List类型,有序,元素可以重复,插入和删除快,查询速度一般,一般保存一些有顺序的数据,如朋友圈点赞列表,评论列表等,LPUSH user 1 2 3可以一个一个推
Redis09-----List类型,有序,元素可以重复,插入和删除快,查询速度一般,一般保存一些有顺序的数据,如朋友圈点赞列表,评论列表等,LPUSH user 1 2 3可以一个一个推
|
4月前
|
索引
ArrayList集合常用方法,.set可以用来生成图片和赋值命名,array.remove(1),array.set(1,“xxxx”)可以修改指定位置,array.size可以获取元素的个数
ArrayList集合常用方法,.set可以用来生成图片和赋值命名,array.remove(1),array.set(1,“xxxx”)可以修改指定位置,array.size可以获取元素的个数
|
5月前
|
存储 NoSQL 安全
Redis第六弹-List列表-(相当于数组/顺序表)Lpush key element-一次可以插入多个元素(假如key已经存在,并且key对应的value并非是list,则会报错)
Redis第六弹-List列表-(相当于数组/顺序表)Lpush key element-一次可以插入多个元素(假如key已经存在,并且key对应的value并非是list,则会报错)
|
5月前
|
存储 NoSQL Redis
Redis第四弹,Redis实现list时候做出的优化ziplist(压缩链表,元素少的情况),可更好的节省空间list——(内部编码:quicklist)Object encoding
Redis第四弹,Redis实现list时候做出的优化ziplist(压缩链表,元素少的情况),可更好的节省空间list——(内部编码:quicklist)Object encoding
|
6月前
|
Java API
【亮剑】三种有效的方法来删除List中的重复元素Java的List
【4月更文挑战第30天】本文介绍了三种Java中删除List重复元素的方法:1) 使用HashSet,借助其不允许重复值的特性;2) 利用Java 8 Stream API的distinct()方法;3) 对自定义对象重写equals()和hashCode()。每种方法都附带了代码示例,帮助理解和应用。
139 1
|
6月前
|
Java
JAVA——List中剔除空元素(null)的三种方法汇总
JAVA——List中剔除空元素(null)的三种方法汇总
|
6月前
|
存储 Java API
java集合Collection(List)和泛型
java集合Collection(List)和泛型
|
17天前
|
人工智能 前端开发 JavaScript
拿下奇怪的前端报错(一):报错信息是一个看不懂的数字数组Buffer(475) [Uint8Array],让AI大模型帮忙解析
本文介绍了前端开发中遇到的奇怪报错问题,特别是当错误信息不明确时的处理方法。作者分享了自己通过还原代码、试错等方式解决问题的经验,并以一个Vue3+TypeScript项目的构建失败为例,详细解析了如何从错误信息中定位问题,最终通过解读错误信息中的ASCII码找到了具体的错误文件。文章强调了基础知识的重要性,并鼓励读者遇到类似问题时不要慌张,耐心分析。