SpringDataでページング機能を実装する方法の紹介

不言
リリース: 2018-10-10 11:47:31
転載
2364 人が閲覧しました

この記事では 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 レイヤー インターフェース #JpaSpecificExecutor を実装するだけです。 #

@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 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:cnblogs.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!