聯合主鍵下的mapper文件對數據庫的批量更新

工做中使用到了聯合主鍵,業務需求要在一系列的操做之後進行更新的操做,傳統形式(單主鍵)下的批量更新就有點很差用了。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>

更新結果:字符串

相關文章
相關標籤/搜索