MyBatis批量操作(mysql)

mybatis批处理的思路是将多条sql合并为1条sql执行,提高效率。

1:批量删除

以数组为例的写法:

    <delete id="batchDeleteGroupMember" parameterType="net.sinolbs.ycd.entity.group.GroupMember">
        delete from group_members where groupId in
        <foreach item="groupMember" collection="array" open="(" separator="," close=")">
            #{groupId}
        </foreach>
    </delete>

以集合为例的写法:

   <delete id="batchDeleteGroupMember" parameterType="net.sinolbs.ycd.entity.group.GroupMember">
        delete from group_members where groupId in
        <foreach item="groupMember" collection="list" open="(" separator="," close=")">
            #{groupMember.groupId}
        </foreach>
   </delete>

mapper

void batchDeleteGroupMember(List<GroupMember> list);

说明:

item集合或数组里的元素(对象)

collection集合类型(数组或集合)

open以什么开始

close以什么结束

separator中间以什么相连

2:批量新增

     <insert id="insertByBatch" parameterType="java.util.List">  
            insert into car_album
             (id, smallImage, largeImage, imgName, carModelsId,type,  imgPageHref, largeImgPageHref)
             values
             <foreach collection ="list" item="img" index= "index" separator =",">
                 (
                 #{img.id}, #{img.smallImage}, #{img.largeImage},  #{img.imgName},
                 #{img.carModelsId}, #{img.type}, #{img.imgPageHref}, #{img.largeImgPageHref}
                 )
             </foreach >
    </insert> 
生成的sql

insert into car_album (id, smallImage, largeImage, imgName, carModelsId,type, imgPageHref, largeImgPageHref) values 
( ?, ?, ?, ?, ?, ?, ?, ? ) , ( ?, ?, ?, ?, ?, ?, ?, ? ) , ( ?, ?, ?, ?, ?, ?, ?, ? ) , ( ?, ?, ?, ?, ?, ?, ?, ? ) ,
 ( ?, ?, ?, ?, ?, ?, ?, ? ) , ( ?, ?, ?, ?, ?, ?, ?, ? ) 




  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李秀才

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值