版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
1.在BlogRepository中继承JpaRepository的同时继承JpaSpecificationExecutor<Blog>
2.
@GetMapping("/blogs") public String blogs(@RequestParam(value = "page",defaultValue = "0") int page, @RequestParam(value = "size",defaultValue = "8") int size,Model model,BlogQuery blog) { Sort sort=new Sort(Sort.Direction.DESC,"id"); Pageable pageable=new PageRequest(page,size,sort); model.addAttribute("types", typeRepository.findAll()); model.addAttribute("page", blogRepository.findAll(new Specification<Blog>() { @Override public Predicate toPredicate(Root<Blog> root, CriteriaQuery<?> cq, CriteriaBuilder cb) { List<Predicate> predicates = new ArrayList<>(); if (!"".equals(blog.getTitle()) && blog.getTitle() != null) { predicates.add(cb.like(root.<String>get("title"), "%"+blog.getTitle()+"%")); } if (null!=blog.getTypeId()) { predicates.add(cb.equal(root.<Type>get("type").get("id"), blog.getTypeId())); } if (blog.isRecommend()) { predicates.add(cb.equal(root.<Boolean>get("recommend"), blog.isRecommend())); } cq.where(predicates.toArray(new Predicate[predicates.size()])); return null; } },pageable)); return "admin/blogs"; }