mybatis批量更新办法
开发的时候碰到一个场景,需要根据给定的id,更新表中的数据,如果写sql语句就是update tableName set columnA = valueA , columnB = valueB ...... where id in (1,2,3,4......) 这种,网上想要找找mybatis批量更新的方法,但是看下来大部分都是复制粘贴一样的内容,感觉太复杂了,看都不想看,又是利用insert的,又是利用replace的,方法倒是给出了不少,只是似乎都和我的业务场景不相符合。然后我尝试了一下另一个方法,如图是xml的代码
<update id="updateBatch"> update test_table <trim prefix="set " suffixOverrides=","> <if test="valueTest.valueA != null">value_a = #{valueTest.valueA},</if> <if test="valueTest.valueB != null">value_b = #{valueTest.valueB},</if> </trim> where id in ( <foreach collection="ids" item="item" separator=","> #{item} </foreach> ) </update>
对应的mapper层代码:
public int updateBatch(@Param("ids") List<String> ids, @Param("valueTest") ValueTest valueabcdefg);
这样即可做到拿到根据对应的ids批量将数据更新为给定的数据
