mybatis 传入list集合查询和新增

本文详细介绍使用MyBatis进行批量数据操作的方法,包括如何通过Mapper接口和XML配置实现List集合的查询和插入,适用于需要高效处理大量数据的场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入代码片
service:调用mapper里的方法
  List<ClubGoodsCommonClass> mapList = classMapper.selectCommonClassByGcIds(list);
  mapper:
 List<ClubGoodsCommonClass> selectCommonClassByGcIds(@Param("goodsIds") List<String> goodsIds);

mapper.xml里的方法:
  <select id="selectCommonClassByGcIds" resultMap="BaseResultMap">
    <!--
      WARNING - @mbg.generated
      This element is automatically generated by MyBatis Generator, do not modify.
    -->
    select gc_id, gc_name, gc_parent_id, full_name, full_id, gc_sort, gc_img, is_delete,gc_type, `level`,
    create_time
    from club_goods_common_class
    where 1>1
    <if test="goodsIds!=null ">
      <foreach item="goodsId" index="index" collection="goodsIds">
         or gc_id = #{goodsId}
      </foreach>
    </if>
  </select>

在这里插入图片描述

mybatis 传入集合新增:
service调mapper里的接口:

clubGoodsClassMapper.createGoodsClassList(arrayList);

mapper里的方法:
int createGoodsClassList(@Param(“list”) List bean);

mapper.xml里的方法:

在这里插入代码片 
<!--批量创建-->
  <insert id="createGoodsClassList" parameterType="com.shop.core.beans.ClubGoodsClass">
    INSERT INTO club_goods_class
    (class_id,gc_id, gc_name, gc_parent_id,
    full_name, full_id, gc_sort,
    gc_img, gc_type, shop_id, `level`, create_time
    )
    VALUES
    <foreach collection="list" item="item" index="index" separator="," >
      (#{item.classId},
      #{item.gcId},
      #{item.gcName},
      #{item.gcParentId},
      #{item.fullName},
      #{item.fullId},
      #{item.gcSort},
      #{item.gcImg},
      #{item.gcType},
      #{item.shopId},
      #{item.level},
      #{item.createTime})
    </foreach>
  </insert>

在这里插入图片描述

### MyBatis 中 XML 配置集合使用的示例 在 MyBatis 的 XML 配置中,`<foreach>` 是一种非常重要的标签,它允许开发者通过循环遍历集合或数组并动态生成 SQL 语句。这种功能特别适用于批量操作场景,比如插多个记录、删除一批符合条件的数据或者更新一组特定条件下的字段。 以下是 `<foreach>` 标签的一个典型使用案例: #### 删除多条记录的示例 假设有一个 `users` 表,并希望基于传入的一组 ID 来删除这些用户的记录,则可以按照如下方式定义 SQL 映射文件中的 `<delete>` 节点[^4]。 ```xml <delete id="deleteUsers" parameterType="java.util.List"> DELETE FROM users WHERE id IN <foreach collection="list" item="id" open="(" separator="," close=")"> #{id} </foreach> </delete> ``` 在这个例子中: - **collection**: 定义了输数的名称,在这里是列表类型的数名。 - **item**: 每次迭代时当前项的变量名。 - **open** **close**: 分别表示整个集合部分前后的字符串包裹符。 - **separator**: 定义集合内部各元素之间的分隔符。 当调用此方法时,如果传递了一个包含 `[1, 2, 3]` 的 List 数给该 Mapper 方法,最终执行的 SQL 将类似于下面这样: ```sql DELETE FROM users WHERE id IN (1, 2, 3); ``` #### 插多条记录的例子 除了删除外,还可以利用 `<foreach>` 实现一次向数据库插多行数据的功能。例如,对于一张名为 `orders` 的表来说,可以通过以下配置实现批量新增订单的操作: ```xml <insert id="batchInsertOrders" parameterType="java.util.List"> INSERT INTO orders(order_number, customer_id, total_amount) VALUES <foreach collection="list" item="order" separator=","> (#{order.orderNumber}, #{order.customerId}, #{order.totalAmount}) </foreach> </insert> ``` 这里假定我们接收的是一个 Order 对象组成的列表作为数,其中每个对象都有三个属性分别对应于上述列值。 以上就是有关如何在 MyBatis 的 XML 文件里处理集合的一些基本介绍以及实际应用实例说明。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值