between and
between and 獲取的是閉區間的數據,如:[100,200]
復雜查詢分頁
* 查詢某個欄目下的所有文章,并且分頁。 * * 如該欄目下有子欄目,則需要一起顯示 * * @param channelId 欄目id * @param searchParams * @param pageNumber * @param pageSize * @return */ public Page<Content> getContentListPaged(final Integer channelId,final Collection<SearchFilter> filters,int pageNumber, int pageSize){ return contentDao.findAll(new Specification<Content>(){ @Override public Predicate toPredicate(Root<Content> root, CriteriaQuery<?> query, CriteriaBuilder builder) { //path轉化 List<Predicate> orPredicates = Lists.newArrayList(); Path<String> idPath = root.get("channel").get("id"); Path<String> parentIdsPath = root.get("channel").get("parentIds"); Predicate p1 = builder.equal(root.get("channel").get("id"), channelId); orPredicates.add(builder.or(p1)); Predicate p2 = builder.like((Path)root.get("channel").get("parentIds"), "%," + channelId + ",%"); orPredicates.add(builder.or(p2)); //以下是springside3提供的方法 Predicate o = DynamicSpecifications.bySearchFilter(filters, Content.class).toPredicate(root, query, builder); Predicate p = builder.or(orPredicates.toArray(new Predicate[orPredicates.size()])); query.where(p,o); return null; } }, new PageRequest(pageNumber - 1, pageSize)); }