一. 问题背景
后台:使用SSM框架
项目:一个商城
描述:批量购买商品后,商品的销量和库存都得更新,由此要执行批量更新操作
二. 解决方案
- 首先最最最最最关键的是在数据库链接后加上参数
allowMultiQueries=true
,如下:
- 在mapper.xml文件中书写sql语句,如下(collection属性的值如果用传进来的方法参数,那么得在参数前加@Param(“cartitems”)
mapper.java接口文件(即常说的Dao接口)
public Integer updateSalesAndStock2(@Param("cartitems")List<Cartitem> cartitems);
要注意在sql语句最后加上分号;,或者在foreach
标签中使用separator=";"
<!--public Integer updateSalesAndStock2(@Param("cartitems")List<Cartitem> cartitems); -->
<update id="updateSalesAndStock2">
<foreach collection="cartitems" item="cartitem" >
update up_product set
sales = sales + #{cartitem.num},
stock = stock - #{cartitem.num}
where product_id = #{cartitem.product_id};
</foreach>
</update>