Maison > Java > javaDidacticiel > Introduction à la méthode d'implémentation de la fonction de pagination dans SpringData

Introduction à la méthode d'implémentation de la fonction de pagination dans SpringData

不言
Libérer: 2018-10-10 11:47:31
avant
2397 Les gens l'ont consulté

Le contenu de cet article est une introduction à la méthode d'implémentation de la fonction de pagination dans SpringData. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.

Pour implémenter la fonction de pagination dans SpringData, nous devons implémenter l'interface PagingAndSortingRepositoryCette interface fournit une méthode de requête de pagination

Page<T> findAll(Pageable pageable); //分页查询(含排序功能)
Copier après la connexion

@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);
        }
    }
Copier après la connexion

De cette façon, nous pouvons facilement implémenter notre pagination, mais nous avons immédiatement découvert que cette pagination ne ne fonctionne pas.

SpringData nous fournit une interface. Il nous suffit d'implémenter notre interface de couche Dao JpaSpecificationExecutor pour obtenir l'effet de pagination conditionnelle

@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);
    }
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:cnblogs.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal