我是靠谱客的博主 悦耳小伙,最近开发中收集的这篇文章主要介绍批量更新list数据,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

记录一个批量更新list数据的bug

mapper.java

mapper.java
void updateOrder(@Param(value = "list") List<OrderGoods> list);

mapper.xml

<update id="updateOrder">
update shop_order
<trim prefix="set" suffixOverrides=",">
<trim prefix="invoice_num =case" suffix="end,">
<foreach collection="list" item="i" index="index">
<if test="i.invoiceNum!=null">
when rec_id=#{i.recId} then #{i.invoiceNum}
</if>
</foreach>
</trim>
<trim prefix="service_num =case" suffix="end,">
<foreach collection="list" item="i" index="index">
<if test="i.serviceNum!=null">
when rec_id=#{i.recId} then #{i.serviceNum}
</if>
</foreach>
</trim>
<trim prefix="service_amount_invoice =case" suffix="end,">
<foreach collection="list" item="i" index="index">
<if test="i.serviceAmountInvoice!=null">
when rec_id=#{i.recId} then #{i.serviceAmountInvoice}
</if>
</foreach>
</trim>
</trim>
where
<foreach collection="list" separator="or" item="i" index="index" >
rec_id=#{i.recId}
</foreach>
</update>

问题:
本来是想着把两条同一个recId的数据分别保存服务费数量和开票数量,我感觉应该是相当于一条一条的执行sql,事实是直接将所有数据拼接成一条大的sql,然后执行。所以同一个recId分别保存用这个是不太现实的。
解决方案:

  1. 将整个list进行for循环保存。数据量大不太可行。
  2. 将同一个recId的实体进行合并,合并成有且只有一个recId,然后用上面那个sql执行。
  3. 其他的暂时还没想到 ????

最后

以上就是悦耳小伙为你收集整理的批量更新list数据的全部内容,希望文章能够帮你解决批量更新list数据所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(39)

评论列表共有 0 条评论

立即
投稿
返回
顶部