mybatis 批量Update(2)

這個方法看起來比上一篇博客 mybatis 批量Update(1) 好像更復雜,當初我第一次須要用到批量更新數據時,也是這麼感受的,而後就一直用前面那個,知道後來前面那種沒法知足個人需求了才被迫研究了這種,忽然發現這種簡單到使人髮指,只是賣相比前面那種難看了點數據庫

此方法是通過本人實踐過的,用於mybatis批量update算是最佳的了吧mybatis

下面看代碼吧spa

<update id="XX" parameterType="list">
   update tableName
   set 
   你要修改的數據庫字段名稱 = CASE 參考的數據庫字段名
    <foreach collection="list" index="i" item="it" separator=" ">
    WHEN  #{參考字段參數,jdbcType=參數類型} THEN #{要修改字段的參數,jdbcType=參數類型}
    </foreach>
   END,<!--多個字段用[,]隔開 END必定不能丟哦-->
    你要修改的數據庫字段名稱 = CASE 參考字段
    <foreach collection="list" index="i" item="it" separator=" ">
    WHEN  #{參考字段參數,jdbcType=參數類型} THEN #{要修改字段的參數,jdbcType=參數類型}
    </foreach>
   END<!--END必定不能丟哦-->
   WHERE 參考的數據庫字段名 IN
    <foreach collection="list" index="i" item="it" separator="," open="(" close=")">
    #{參考字段參數,jdbcType=參數類型}
    </foreach>
   </update>

若是有參數意思不明白的能夠留言評論,我基本天天都會上來轉一圈開源中國會看到的.net

以下democode

好比有一張person表
裏面有三個字段 name sex age
而後有三條記錄 張三 男 23
李四 男 32
王五 女 33
如今要將張三改成女 李四改成 44歲 王五改成 男
入參用list容器裝person對象
<UPDATE id="update" parameterType="list">
update person
set
sex= case name
<foreach collection="list" item="t" index="i" separator=" ">
WHEN #{t.name,jdbcType=VARCHAR} THEN #{t.sex,jdbcType=VARCHAR}
</foreach>
END;
age= case name
<foreach collection="list" item="t" index="i" separator=" ">
WHEN #{t.name,jdbcType=VARCHAR} THEN #{t.age,jdbcType=INTEGER}
</foreach>
END;
WHERE name in
<foreach collection="list" item="t" index="i" open="(" close=")" separator=",">
#{t.name,jdbcType=VARCHAR}
</foreach>
</update>
相關文章
相關標籤/搜索