您的位置:首页 > 其它

Mybatis 批量更新

2016-04-23 18:18 288 查看
需求:从购物车页面点击结算,需要修改 书本 的销量和库存。但是用户很可能买了很多类书,每类书有好几本,如果在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了!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: