Mybatis 批量更新

需求:从购物车页面点击结算,需要修改 书本 的销量和库存。但是用户很可能买了很多类书,每类书有好几本,如果在java里做循环,则发生多次数据库请求,效率低。
mybatis接受 类型 为list的参数,并支持动态sql,用iterator拼装sql语句。

<update id="batchUpdateAmount" parameterType="java.util.List">
         <foreach collection="list" item="item" index="index" open="" close="" separator=";">  
                update books   
                     set salesAmount = salesAmount + #{item.quantity},
                         storeNumber = storeNumber - #{item.quantity}                                
                where bookId = #{item.book.bookId}  
         </foreach>  
    </update>   

但是!这样只适用于list中只有一个对象的情况。一旦有多个对象则报错!
为了这个问题苦恼了很久,最后找到了一个解决办法,那就是设置数据库连接属性:allowMultiQueries=true。

jdbc.url=jdbc:mysql://localhost:3306/bookdb?allowMultiQueries=true

意思是允许MySQL同时执行多条SQL语句。
设置好这个,就OK了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值