我正在开发一个Spring应用程序,我需要更新数据库中的每个用户(大约4500条记录)。
我的代码在只有少数用户的本地环境中运行得很好,但我担心在测试环境中,甚至在实时环境中,如果我从数据库中获取每个用户,代码会非常慢。
以下是我目前为止的代码:
public void syncUsers() {
List<User> usersList = userService.getAllUsers();
usersList.stream().forEach((user) -> {
if (isNull(user.getSocialId())) {
String id = socialRestAPIService.syncContacts(user);
user.setSocialId(id);
userService.updateUser(user);
}
});
}
这是userService.getAllUsers
方法:
public List<User> getAllUsers () {
return userRepository.findAll();
}
我想实现的是一次更新100个用户,然后再更新下一个100个用户。这怎么可能
2条答案
按热度按时间ivqmmu1c1#
如果
userRepository
是一个JpaRepository
,那么它实现了PagingAndSortingRepository
,它有一个方法findAll(可分页)。因此,您可以创建一个
Pageable
,如下所示:pkmbmrz72#
你可以使用pagable和while循环按限制获取所有数据,直到获取所有数据。例如: