问题详情:对User表进行分页查询,例如总共50条数据,就会分25次查询,会出现有的数据未修改成功
int page = 0;
int totalPages;
UserRepository userRepository = SpringUtil.getBean(UserRepository.class);
do {
PageRequest pageRequest = PageRequest.of(page, 2);
Page<User> userPage = userRepository.findAll(pageRequest);
totalPages = userPage.getTotalPages();
page++;
List<User> users = userPage.getContent();
users.forEach(user -> {
String name = user.getName();
name += "_";
userRepository.save(user);
});
log.info("总共{}页,现在是第{}页", totalPages, page);
} while (certPage <= certTotalPages);
问题原因:对数据未进行排序,就会出现查询同一条数据的结果
解决方案:在进行分页查询时加上排序,如下:
PageRequest pageRequest = PageRequest.of(page, 2, Sort.by(Sort.Direction.ASC, "id"));
完整代码
int page = 0;
int totalPages;
UserRepository userRepository = SpringUtil.getBean(UserRepository.class);
do {
PageRequest pageRequest = PageRequest.of(page, 2, Sort.by(Sort.Direction.ASC, "id"));
Page<User> userPage = userRepository.findAll(pageRequest);
totalPages = userPage.getTotalPages();
page++;
List<User> users = userPage.getContent();
users.forEach(user -> {
String name = user.getName();
name += "_";
userRepository.save(user);
});
log.info("总共{}页,现在是第{}页", totalPages, page);
} while (certPage <= certTotalPages);