原创

mybatis循环更新数据

温馨提示:
本文最后更新于 2022年07月20日,已超过 885 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我

1. 业务场景

在使用若依框架的时候它的批量删除是真删除的模式,即使用delete语句删除数据。
但往往我们在开发的时候都是使用逻辑删除的模式,即通过status字段来判断数据是否被删除。

今天就来改造一下这个批量删除的逻辑。‘

file

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
正文到此结束
本文目录