mybatis循环更新数据
温馨提示:
本文最后更新于 2022年07月20日,已超过 885 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我。
1. 业务场景
在使用若依框架的时候它的批量删除是真删除的模式,即使用delete语句删除数据。
但往往我们在开发的时候都是使用逻辑删除的模式,即通过status字段来判断数据是否被删除。
今天就来改造一下这个批量删除的逻辑。‘
2. 解决方法
使用mybatis中的foreach标签来批量更新数据
使用foreach遍历我们前台传来的数组或者List集合
由于我们不仅仅是更新的状态字段,我们还需要更新删除人和删除时间等字段,所以我们需要遍历List
<update id="deleteBizBookByBooks" parameterType="list">
<if test="list!=null">
<foreach collection="list" item="book" separator =";">
update biz_book
<trim prefix="SET" suffixOverrides=",">
<if test="book.status != null">status = #{book.status},</if>
<if test="book.updateBy != null">update_by = #{book.updateBy},</if>
<if test="book.updateTime != null">update_time = #{book.updateTime},</if>
</trim>
where id=#{book.id}
</foreach>
</if>
</update>
2.1 属性讲解
parameterType属性:如果是List集合就填list
collection属性:如果是List-->list 如果是数组-->array
trim标签中的prefix
属性:用于在字段前拼接set 。suffixOverrides
属性:会删除sql中多余的逗号
3. 注意事项
如果大家在操作过程中还有sql错误,那还有可能是MySQL不支持同时执行多条sql
3.1 解决方法
数据库连接串中加入allowMultiQueries=true
url: jdbc:mysql://localhost:3306/book_manager?useUnicode=true&allowMultiQueries=true
正文到此结束
- 本文标签: 若依 mybatis
- 本文链接: https://www.it1997.com/article/96
- 版权声明: 本文由小陈没烦恼原创发布,转载请遵循《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权