mybatis实现数据库的批量操作

本文介绍了使用MyBatis进行批量查询、批量增加、批量修改等操作的具体实现方式,包括XML映射文件中的SQL语句编写技巧,如利用foreach标签进行参数遍历。

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

这里直接粘贴代码,注意使用的是select标签,下面是批量查询操作

<select id="findByIds" parameterType="java.util.List" resultType="com.jwkj.tt.api.quality.pojo.entity.base.SysDict">
    select
    id,
    dict_info dictInfo,
    dict_category dictCategory,
    created,
    state,
    extension
    from sys_dict where
     id in
    <foreach item="id" index="index" collection="list"
             open="(" separator="," close=")">
      #{id}
    </foreach>
  </select>

这里是批量增加的操作(一般使用mybatisplus的entity内置的方法)

 <select id="batchInsertion" parameterType="java.util.List">
        INSERT INTO product_process_drawback
        (created,
        drawback_id,
        information,
        company_id,
        dept_id,
        receiver,
        master,
        attachment,
        state
        )
        VALUES
        <foreach collection="list"  index="index" item="item" separator=",">
            (#{item.created},
            #{item.drawbackId},
            #{item.information},
            #{item.companyId},
            #{item.deptId},
            #{item.receiver},
            #{item.master},
            #{item.attachment},
            #{item.state}
            )
        </foreach>
    </select>

这里是批量插入的操作,使用的是select标签,注意foreach标签的使用是批量操作的关键

下面的代码实现批量修改的操作,具体代码如下:

<update id="updateStates" parameterType="java.util.List">
    update product_plan set state =
    <foreach collection="list" item="item" index="index"
             separator=" " open="case ID" close="end">
      when #{item.id} then #{item.state}
    </foreach>
    where id in
    <foreach collection="list" index="index" item="item"
             separator="," open="(" close=")">
      #{item.id,jdbcType=BIGINT}
    </foreach>
  </update>

一般使用批量修改使用update 方法,不过是知道具体多少条数据,不过执行上来说,会先删除原来的数据再新增,但是使用insert into的方法是实现批量修改,不会删除原来的数据,不过推荐使用上面的方法,能够节省性能

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值