从页面实例检索总元素-Spring MVC



利用Spring Framework的Page接口,我可以一次检索50个用户,代码如下:

int page = 0;
int pageSize = 50;
Page<User> userPage = userRepo.findByFirstName("Bob", page, pageSize);
List<User> userList = userPage.getContent();

这在后台运行了一些查询,为我提供了数据库中的前50个用户。我想做的是在没有分页的情况下填充我的userList,以便从底层查询返回每个查询-这可能吗?

我在我的Page对象上尝试了hasNext()方法,但它在无休止的循环中运行

while(userPage.hasNext()){
    logger.info("Next page found");
}

有什么想法吗?

如果不需要分页,可以忽略spring-Page,直接调用userRepo.findByFirstName("Bob");

这将返回数据库中firstName为bob 的所有用户

您的方法签名应该是

List<User> users = userRepo.findByFirstName("Bob");

希望这能解决您的问题

如果您总是希望所有用户而不是按页面显示,则需要在存储库侧对此进行调整。更改findByFirstName的签名以返回List<User>而不是Page<User>,并删除Pageable参数。然后,它将始终返回所有。请参阅Spring Data文档中有关如何处理参数的更多信息。

如果有时需要分页,有时需要获取所有数据,那么只需添加List<User>版本即可。返回类型将取决于是否基于Java的常见重载传递Pageable参数。

Page上的hasNext()方法只是告诉您下一个页面是否可用(用于显示导航),它不会运行另一个查询。为了通过Pageable接口访问所有数据,您需要构造一个新的Pageable对象,并遍历对Page<User>版本的几个调用,这比最初只查询实际需要的数据效率低。

相关内容

最新更新