基于昨天接触Jpa,刚好工作转接接触到一段jpa复杂查询代码 直接进入主题,dao层中的一个内部类 public interface LiteratureRepository extends JpaRepository<Literature, Long>, JpaSpecificationExecutor<Literature> { class SpecBuilder { public static Specification<Literature> findLiteraturByTitle() { return (Specification<Literature>) (root, query, cb) -> { List<Predicate> list = new ArrayList<Predicate>(); String title = "发展"; if(title != null) { list.add(cb.like(root.get("docTitle").as(String.class),"%" + title + "%")); } Predicate[] p = new Predicate[list.size()]; return cb.and(list.toArray(p)); }; } } } 因为追求测试结果,中间就不调用service层,直接采用Controller调用,粗暴,直接上代码
@ApiOperation(value = "复杂查询") @GetMapping("/test") public ResponseModel conflictQuery() { Pageable pageable = new PageRequest(1,10,Sort.Direction.ASC, "id"); Page<Literature> all = literatureRepository.findAll(LiteratureRepository.SpecBuilder.findLiteraturByTitle(), pageable); return ResponseModel.ok().setBody(all); }
返回成功,下一篇文章接着测试多条件的,谢谢