xml中批量修改
批量修改是之前用的最多的是利用存在的单个修改方法在一个List中循环调用,但是他也存在很多问题。批量修改我用的比较多的场景是excel导入时,重复数据时给修改为最后一次的值。但是当量级上去后效率问题就需要重新考虑了。
当量级较大时,考虑将List集合切割成多份,再批量修改。
代码块
service
//每次插入或者更新数量
private final static Integer TER_COUNT = 100;
int len = updateList.size();
for (int i = 0; (i + 1) * TER_COUNT <= len || ((i + 1) * TER_COUNT >= len && i * TER_COUNT < len); i++) {
List<TExactsaleRestrict> subList = updateList.subList(i * TER_COUNT, ((i + 1) * TER_COUNT > len ? len : (i + 1) * TER_COUNT));
dao.updateListBatch(subList);
}
xml
<update id="updateListBatch" parameterType="java.util.List" >
<foreach collection="list" item="item" index="index" open="begin" close=";end;" separator=";">
update t_able
<set>
expirationtime = #{item.expirationtime,jdbcType=TIMESTAMP},
updater = #{item.updater,jdbcType=DECIMAL},
updatetime = #{item.updatetime,jdbcType=TIMESTAMP}
</set>
<where>
id = #{item.id}
</where>
</foreach>
</update>