이 글은 SpringData에서 페이징 기능을 구현하는 방법을 소개합니다. 필요한 친구들이 참고할 수 있기를 바랍니다.
SpringData에서 페이징 기능을 구현하려면 인터페이스를 구현해야 합니다. PagingAndSortingRepository이 인터페이스는 페이징 쿼리 메서드를 제공합니다# 🎜 🎜#
Page<T> findAll(Pageable pageable); //分页查询(含排序功能)
@Test public void Pagination() { int pageIndex = 1;// 前台传过来的当前页 int pageSize = 5;// 每页需要的记录数 /** * 不带排序写法: Pageable pageable = new PageRequest(pageIndex, pageSize); */ // 按照年龄字段排序 Order order = new Order(Direction.DESC, "age"); Sort sort = new Sort(order); Pageable pageable = new PageRequest(pageIndex - 1, pageSize, sort); Page<Student> page = studentService.findAll(pageable); System.out.println("总记录数:" + page.getTotalElements()); System.out.println("当前第几页:" + (page.getNumber() + 1)); System.out.println("总页数:" + page.getTotalPages()); System.out.println("当前页的List:" + page.getContent()); System.out.println("当前页面的记录数:" + page.getNumberOfElements()); for (Student student : page.getContent()) { System.out.println(student); } }이것은 쉽게 구현할 수 있습니다. 우리 페이지는 페이지 매김이 있었지만 페이지 페이지 매김이 조건부가 아니라는 것을 즉시 발견했습니다. SpringData는 Dao 레이어 인터페이스만 구현하면 됩니다.
JpaSpecificationExecutor
@Test public void testJpaSpecificationExecutor(){ int pageIndex = 1; int pagesize = 0; PageRequest pagerequest = new PageRequest(pageIndex - 1, pagesize); Specification<Student> specification = new Specification<Student>() { @Override public Predicate toPredicate(Root<Student> root, CriteriaQuery<?> query, CriteriaBuilder cb) { /** * Root<Student>:表示查询的实体 * CriteriaQuery:可以从中得到root对象,即告知JPA criteria查询要查询哪一个实体类。还可以来添加查询条件。还可以结合EntityManager对象得到最终查询的TypedQuery对象。 * CriteriaBuilder:用于创建Criteria相关对象的工厂。 */ //年龄属性 Path<Integer> path = root.get("age"); Predicate predicate = cb.gt(path, 5);//大于5 return predicate; } }; Page<Student> page = studentDao.findAll(specification, pagerequest); }
위 내용은 SpringData의 페이징 기능 구현 방법 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!