mysql的update函数_mysql批量update的两种方法

today a question let me happy(抓狂)

头儿分了一个小任务,让修改循环调用dao层的那些不啦不啦不啦,鉴于之前写过批量更新的玩意,so 很快代码就修改完了,but 测的时候发现总是报错,很诡异,mmp 万分不解,以前就是这么写的,为嘛在这个项目就GG了?

后来还是广大人民群众给我指了条明道。OK,let us see

方法一:

update ${t_sr_process_detail}

TENANT_ID = #{item.tenantId,jdbcType=VARCHAR},

LG_ID = #{item.lgId,jdbcType=BIGINT},

ROUTE_LG_ID = #{item.routeLgId,jdbcType=BIGINT},

.....

where DSPS_PROC_ID = #{item.dspsProcId,jdbcType=BIGINT};

这就是我最先想到的,直接循环,构造出多条update语句 但是,很不幸的是 mysql默认不支持这种写法,其实它是不支持多条以‘;’分割的sql

解决方式:在jdbcURL配置追加:allowMultiQueries=true

方法二:

update ${t_sr_process_detail}

when DSPS_PROC_ID=#{item.dspsProcId} then #{item.tenantId,jdbcType=VARCHAR}

when DSPS_PROC_ID=#{item.dspsProcId} then #{item.lgId,jdbcType=BIGINT}

when DSPS_PROC_ID=#{item.dspsProcId} then #{item.routeLgId,jdbcType=BIGINT}

when DSPS_PROC_ID=#{item.dspsProcId} then #{item.wrkfmId,jdbcType=BIGINT}

.....

where DSPS_PROC_ID in

#{item.dspsProcId,jdbcType=BIGINT}

方法二据说效率高,其实不然,经过测试,发现方法二的速度明显慢与方法一,因为参数太多,使用case when 则每个参数都会循环,so we checked the first method .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值