Mybatis批量更新配置(Mysql batch update)

Mybatis在Mysql批量更新中不支持BEGIN与END关键字,所以如下配置是错误的:

<update id="batchUpdate"  parameterType="java.util.List">
      
          <foreach collection="list" item="item" index="index" open="begin" close="end;" separator=";">
                update test 
                <set>
                  test=${item.test}+1
                </set>
                where id = ${item.id}
         </foreach>
          
</update>

 

正确做法如下:

 

方法一:执行多条SQL语句
<update id="batchUpdate" parameterType="java.util.List">

<foreach collection="list" item="item" index="index" open="" close="" separator=";">
update test 
<set>
test=${item.test}+1
</set>
where id = ${item.id}
</foreach>

</update>
 
方法二:执行一条SQL语句(建议) 写道
<update id="batchUpdate" parameterType="java.util.List">
update test set test=${item.test}+1 where id in
<foreach collection="list" item="item" index="index" open="(" close=")" separator=",">
${item.id}
</foreach>
</update>
 

 

MyBatis中实现批量更新MySQL有几种方式,包括使用case when、foreach成多条SQL、ON DUPLICATE KEY UPDATE和replace into。下面是这几种方式的介绍: 1. 使用case when: ```xml <update id="batchUpdate" parameterType="java.util.List"> UPDATE table_name SET column_name = CASE <foreach collection="list" item="item" separator=" "> WHEN id = #{item.id} THEN #{item.value} </foreach> END WHERE id IN <foreach collection="list" item="item" open="(" separator="," close=")"> #{item.id} </foreach> </update> ``` 2. foreach成多条SQL: ```xml <update id="batchUpdate" parameterType="java.util.List"> <foreach collection="list" item="item" separator=";"> UPDATE table_name SET column_name = #{item.value} WHERE id = #{item.id} </foreach> </update> ``` 3. ON DUPLICATE KEY UPDATE(仅适用于MySQL): ```xml <update id="batchUpdate" parameterType="java.util.List"> INSERT INTO table_name (id, column_name) VALUES <foreach collection="list" item="item" separator=","> (#{item.id}, #{item.value}) </foreach> ON DUPLICATE KEY UPDATE column_name = VALUES(column_name) </update> ``` 4. replace into(仅适用于MySQL): ```xml <update id="batchUpdate" parameterType="java.util.List"> REPLACE INTO table_name (id, column_name) VALUES <foreach collection="list" item="item" separator=","> (#{item.id}, #{item.value}) </foreach> </update> ``` 这些是在MyBatis中实现批量更新MySQL的几种方式。根据具体的需求和数据库类型,选择适合的方式进行批量更新操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值