这个方法看起来比上一篇博客 好像更复杂,当初我第一次需要用到批量更新数据时,也是这么感觉的,然后就一直用前面那个,知道后来前面那种无法满足我的需求了才被迫研究了这种,突然发现这种简单到令人发指,只是卖相比前面那种难看了点
此方法是经过本人实践过的,用于mybatis批量update算是最佳的了吧
下面看代码吧
update tableName set 你要修改的数据库字段名称 = CASE 参考的数据库字段名 WHEN #{参考字段参数,jdbcType=参数类型} THEN #{要修改字段的参数,jdbcType=参数类型} END, 你要修改的数据库字段名称 = CASE 参考字段WHEN #{参考字段参数,jdbcType=参数类型} THEN #{要修改字段的参数,jdbcType=参数类型} END WHERE 参考的数据库字段名 IN#{参考字段参数,jdbcType=参数类型}
如果有参数意思不明白的可以留言评论,我基本每天都会上来转一圈开源中国会看到的
如下demo
比如有一张person表里面有三个字段 name sex age然后有三条记录 张三 男 23李四 男 32王五 女 33现在要将张三改为女 李四改为 44岁 王五改为 男入参用list容器装person对象update personsetsex= case name WHEN #{t.name,jdbcType=VARCHAR} THEN #{t.sex,jdbcType=VARCHAR} END;age= case nameWHEN #{t.name,jdbcType=VARCHAR} THEN #{t.age,jdbcType=INTEGER} END;WHERE name in#{t.name,jdbcType=VARCHAR}