概述
记录一个批量更新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分别保存用这个是不太现实的。
解决方案:
- 将整个list进行for循环保存。数据量大不太可行。
- 将同一个recId的实体进行合并,合并成有且只有一个recId,然后用上面那个sql执行。
- 其他的暂时还没想到 ????
最后
以上就是悦耳小伙为你收集整理的批量更新list数据的全部内容,希望文章能够帮你解决批量更新list数据所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复