从性能角度来看,第一个方案 (使用 favoriteService.update) 更好一些,因为它只会执行一次数据库操作。而第二个方案 (使用 favoriteService.listfavoriteService.updateBatchById) 需要执行两次数据库操作,一次查询,一次更新。

然而,需要注意的是,第一个方案可能会对整个表进行更新操作,这可能会影响到其他记录的排序,需要谨慎使用。第二个方案只会更新指定条件下的记录,更加精确。

因此,在具体场景下需要根据实际情况选择合适的方案。如果需要更新所有满足条件的记录,并且性能要求较高,建议使用第一个方案。如果需要更精确地更新特定记录,或者对性能要求不高,建议使用第二个方案。

以下是两种方案的代码示例:

  1. 单次更新:
favoriteService.update(
        Wrappers.<Favorite>lambdaUpdate()
                .setSql('SORT = SORT - 1')
                .gt(Favorite::getSort, favorite.getSort())
);
  1. 批量更新:
List<Favorite> favoriteList = favoriteService.list(
        Wrappers.<Favorite>lambdaQuery()
                .gt(Favorite::getSort, favorite.getSort())
);
favoriteList.forEach(i -> i.setSort(i.getSort() - 1));
favoriteService.updateBatchById(favoriteList);
两种更新排序方法的性能比较:单次更新 vs. 批量更新

原文地址: https://www.cveoy.top/t/topic/mUgh 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录