MyBatis-Plus 更新排序字段的两种方式比较
本文比较了使用 MyBatis-Plus 更新排序字段的两种方式,它们都能够实现排序字段的更新,但在实现方式和适用场景上有所区别。
第一种方式:使用 SQL 语句
favoriteService.update(
Wrappers.<Favorite>lambdaUpdate()
.setSql('SORT = SORT - 1')
.gt(Favorite::getSort, favorite.getSort())
);
这种方式利用 MyBatis-Plus 提供的 Wrapper 对象构建更新条件,并通过 setSql 方法指定 SQL 语句,一次性更新多条记录。它适用于需要批量更新排序字段的场景,例如对多条记录进行整体的排序调整。
第二种方式:逐条修改
List<Favorite> favoriteList = favoriteService.list(
Wrappers.<Favorite>lambdaQuery()
.gt(Favorite::getSort, favorite.getSort())
);
favoriteList.forEach(i -> i.setSort(i.getSort() - 1));
favoriteService.updateBatchById(favoriteList);
这种方式先查询出需要更新的记录,然后逐条修改排序字段,最后一次性更新到数据库中。它适用于需要逐条修改记录的场景,例如需要在修改一条记录时,同时修改其后面所有记录的排序字段,以确保数据的一致性。
总结
两种方式各有优劣,具体使用哪种方式需要根据实际情况来决定。如果您需要一次性更新多条记录,建议使用第一种方式;如果您需要逐条修改记录,建议使用第二种方式。
原文地址: https://www.cveoy.top/t/topic/mUd2 著作权归作者所有。请勿转载和采集!