在春季使用实体管理器实现分页 [英] Implementing Pagination using entity manager in spring
本文介绍了在春季使用实体管理器实现分页的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如何在Spring + Hibernate项目中实现分页? 以下是代码.我将获得PageRequest对象,并想返回项目的页面
How can I implement pagination in Spring + hibernate project ? Following is the code. I will get PageRequest object and I want to return Page of item
@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;
}
}
推荐答案
我找到了解决方法
public Page<Item> findItems(PageRequest pageRequest) {
Query query = entityManager.createQuery("From Item");
int pageNumber =pageRequest.getPageNumber();
int pageSize = pageRequest.getCount();
query.setFirstResult((pageNumber) * pageSize);
query.setMaxResults(pageSize);
List <Item> fooList = query.getResultList();
Query queryTotal = entityManager.createQuery
("Select count(f.id) From Item f");
long countResult = (long)queryTotal.getSingleResult();
int i=(int)countResult;
return new Page<>(fooList, pageRequest.getPageNumber(),i);
}
我不得不向数据库查询两次,一次获取记录,然后获取所有计数
I had to query two times to DB once to get records and then to get all the count
这篇关于在春季使用实体管理器实现分页的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文