van_cc
2020-09-29 14:58
采纳率: 57.1%
浏览 94
已采纳

批量操作时应该在java里对删除条件遍历还是应该把删除条件放到list请求数据库?

如题所示。有一个对表单进行批量操作的接口,是利用id作条件对数据库进行update操作。这时候应该将条件id遍历然后循环去更新数据库还是应该放到list里面作为in的条件一次性更新数据库呢?

前提是数据量比较小,时间差异不大。这两种方法各有什么好处或者没区别?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • 我最爱晓曼了 2020-09-29 17:57
    已采纳
    <update id="updateBatch" parameterType="java.util.List">
            update mysql_table
            <trim prefix="set" suffixOverrides=",">
                <trim prefix="status =case" suffix="end,">
                    <foreach collection="list" item="item" index="index">
                         when id=#{item.id} then #{item.status}
                    </foreach>
                </trim>
            </trim>
            where id in
            <foreach collection="list" index="index" item="item" separator="," open="(" close=")">
                #{item.id,jdbcType=BIGINT}
            </foreach>
     </update>
    

    个人认为这样比较好,第一种多次数据连接和释放会造次连接超时等问题。第二种比较适合

    点赞 评论
  • sanshizhang 2020-09-29 15:21

    第一种方式,不太可取,会多次访问数据库

    点赞 评论
  • 风丶飞 2020-09-29 15:32

    建议第二种,如果是mybatis的话可以用动态语句,非常实用

    点赞 评论

相关推荐 更多相似问题