如何在Spring + hibernate项目中实现分页?下面是代码。我将获得PageRequest对象,我想返回项目的Page
@Repository
public class ItemRepository {
@PersistenceContext
EntityManager entityManager;
public Page<Item> findItems(PageRequest pageRequest) {
// TODO: Implement me
return new Page<>(new ArrayList<>(), 0, 0);
}
}
public class PageRequest {
private final int count;
private final int pageNumber;
public PageRequest(int pageNumber, int count) {
assert pageNumber >= 0;
assert count > 0;
this.pageNumber = pageNumber;
this.count = count;
}
public int getCount() {
return count;
}
public int getPageNumber() {
return pageNumber;
}
}
3条答案
按热度按时间uidvcgyl1#
我找到解决办法了
我不得不查询两次数据库一次获得记录,然后获得所有的计数
jfgube3f2#
一种方法是在
PageRequest
类中添加逻辑,根据Pageable
方法参数对传入列表进行“切片”,并将其作为org.springframework.data.domain.PageImpl
返回。下面是一个可以在
PageRequest
类中使用的静态方法:然后在你的仓库中,你可以这样做(注意你收到了一个
Pageable
对象):roejwanj3#
在使用Spring Data JPA的项目中,您可以非常有效地使用
EntityManager
实现分页,因为它允许您直接将结果集值Map到DTO,跳过冗余的实体到DTOMap:在本例中,查询在
Item
实体类中定义:这样你就可以很容易地返回分页的结果: