SpringBootにJpaSpecificationExecutor動的ページでJPAを使用します

免責事項:この記事はブロガーオリジナル記事です、続くBY-SAのCC 4.0を著作権契約、複製、元のソースのリンクと、この文を添付してください。
このリンク: https://blog.csdn.net/hardtomakeaname/article/details/102630649

1. BlogRepositoryでJpaRepositoryを継承し、両方の継承JpaSpecificationExecutor <ブログ>

2。

@GetMapping( "/ブログ")
公共の文字列のブログ(@RequestParam(値= "ページ"、はdefaultValue = "0")int型のページ、
                    @RequestParam(値= "サイズ"、はdefaultValue = "8")int型のサイズ、モデルモデル、BlogQueryブログ)
{
    ソートソート=新しいソート(Sort.Direction.DESC、 "ID");

    ページング可能ページング可能=新しいPageRequest(ページ、サイズ、ソート)。







    model.addAttribute( "種類"、typeRepository.findAll());
    model.addAttribute( "ページ"、blogRepository.findAll(新仕様<ブログ>(){
        @オーバーライド
        公共述語toPredicate(ルート<ブログ>根、CriteriaQuery <?> CQ、CriteriaBuilderのCB){


            一覧<述語>述語=新しいArrayListを<>();
            (もし! ""。等しい(blog.getTitle())&& blog.getTitle()!= NULL){
                predicates.add(cb.like(ルート<文字列>( "タイトル" を取得)、 "%" + blog.getTitle()+ "%"));
            }
            もし(ヌル!= blog.getTypeId()){
                predicates.add(cb.equal(ルート<タイプ>( "タイプ" を取得)( "ID" を取得)、blog.getTypeId())。。);
            }
            IF(blog.isRecommend()){
                predicates.add(cb.equal(ルート<ブール>() "をお勧めします" を取得、blog.isRecommend()));
            }
            cq.where(predicates.toArray(新しい述語[predicates.size()]))。


            ヌルを返します。
        }
    }、ページング可能))。


    「管理者/ブログ」を返します。
}


おすすめ

転載: blog.csdn.net/hardtomakeaname/article/details/102630649