免責事項:この記事はブロガーオリジナル記事です、続くBY-SAのCC 4.0を著作権契約、複製、元のソースのリンクと、この文を添付してください。
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()]))。 ヌルを返します。 } }、ページング可能))。 「管理者/ブログ」を返します。 }