工做中使用到了联合主键,业务需求要在一系列的操做之后进行更新的操做,传统形式(单主键)下的批量更新就有点很差用了。java
工做中的业务固然不能拿出来讲明了,随便创建一张表,说明一下问题。数据库
表结构以下:app
内部数据以下:code
主要任务是要吧表中的 AMOUNT 字段修改批量修改,那一套的请求、分层、数据库、和mapper生成就省略了。随处均可以找到的。xml
先上mapper批量更新的语句:blog
<update id="updateByBatch" parameterType="java.util.List"> update dcwt_test set AMOUNT = CASE <foreach collection="list" item="item" index="index"> // 此处看一下应该能理解的 when PARTID=#{item.partid} AND BRESQ=#{item.bresq} then #{item.amount} </foreach> END where <foreach collection="list" item="item" index="index"> // 主要就是字符串拼接 OR (PARTID=#{item.partid} AND BRESQ=#{item.bresq}) <if test="index!=list.size-1"> // 还真没想到这玩意还能这么写的 OR </if> </foreach> </update>
更新结果:字符串