Mybatis批量更新多个字段

10 篇文章 0 订阅

新项目用到了Mybatis,好久没用了,有些比较生疏。今天需要批量更新部分数据

最开始用的是:

<update id="updateApprovalsStatus" parameterType="java.util.List">
    update pay_bill 
    set  bill_status=
    <foreach collection="list" item="item" index="index" 
        separator=" " open="case ID" close="end">
        when #{item.id} then #{item.billStatus}
    </foreach>
    set  approval_date=
    <foreach collection="list" item="item" index="index" 
        separator=" " open="case ID" close="end">
        when #{item.id} then #{item.approvalDate}
    </foreach>
    where id in
    <foreach collection="list" index="index" item="item" 
        separator="," open="(" close=")">
        #{item.id,jdbcType=INTEGER}
    </foreach>
 </update>

但是发送的SQL报错

后来在网上找到了多次update的方式,但是要配置在数据库连接配置上allowMultiQueries=true,如:jdbc:mysql://10.10.20.36:3306/test?allowMultiQueries=true,但是这样的效率并不高。

于是换了种,并且效率也可以

代码:

<update id="updateApprovalsStatus" parameterType="java.util.List">
		update pay_bill   
       <trim prefix="set" suffixOverrides=",">   
           <trim prefix="bill_status =case" suffix="end,">   
               <foreach collection="list" item="item"  index="index">   
                           when id = #{item.id} then #{item.billStatus}   
               </foreach>   
           </trim>  
           <trim prefix="approval_date =case" suffix="end,">   
               <foreach collection="list" item="item"  index="index">   
                           when id = #{item.id} then #{item.approvalDate}  
               </foreach>   
           </trim>   
        </trim>  
        where id in
        <foreach collection="list" index="index" item="item" 
	        separator="," open="(" close=")">
	        #{item.id,jdbcType=INTEGER}
	    </foreach>       
  </update>

问题解决!小计一下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值