Heim  >  Artikel  >  Java  >  Einführung in die Methode zur Implementierung der Paging-Funktion in SpringData

Einführung in die Methode zur Implementierung der Paging-Funktion in SpringData

不言
不言nach vorne
2018-10-10 11:47:312388Durchsuche

Der Inhalt dieses Artikels ist eine Einführung in die Methode zur Implementierung der Paging-Funktion in SpringData. Ich hoffe, dass er für Sie hilfreich ist.

Um die Paging-Funktion in SpringData zu implementieren, müssen wir die Schnittstelle PagingAndSortingRepositoryDiese Schnittstelle stellt eine Paging-Abfragemethode

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);
        }
    }

Auf diese Weise können wir unser Paging einfach implementieren, aber wir haben sofort festgestellt, dass dieses Paging keine Bedingungen hat.

SpringData stellt uns eine Schnittstelle zur Verfügung

JpaSpecificationExecutor, um den Effekt des bedingten Pagings zu erzielen

@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);
    }

Das obige ist der detaillierte Inhalt vonEinführung in die Methode zur Implementierung der Paging-Funktion in SpringData. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:cnblogs.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen