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>
相关文章
相关标签/搜索