最近做项目遇到一个问题,前台页面修改购物订单,订单包含几百条商品,前台修改商品的数量,列表信息提交给后台。 订单表Order(OrderNo,GoodsCode,GoodsName,Unit,Remark,Quantity,.........);
前台修改Quantity的值,返回List<OrderVo>,OrderVo对象包含三个属性OrderNo,GoodsCode,Quantity,存新的Quantity值。
传统的方法,根据商品编号一条一条update的Order表中的Quantity值,update几百次,显然效率很低。
现在考虑建一张临时表OrderTemp(OrderNo,GoodsCode,Quantity),批量插入List<OrderVo>的对象内容
INSERT INTO OrderTemp
(OrderNo,GoodsCode,Quantity)
(SELECT #{item.orderNo,jdbcType=VARCHAR},#{item.GoodsCode,jdbcType=VARCHAR},#{item.Quantity,jdbcType=REAL} FROM DUAL)
然后用临时表给订单表赋值
update Order d
SET d.Quantity =(select t.Quantity from OrderTemp t where t.OrderNo = d.OrderNo )
where exists(select 1 from OrderTemp t where t.OrderNo = d.OrderNo )