如何在带有自定义过滤器的 Spring 数据 mongodb 中使用分页和排序



在Spring Data JPA中,我们有规范,可以使用分页和规范排序。

public interface JpaSpecificationExecutor<T> {
    T findOne(Specification<T> var1);
    List<T> findAll(Specification<T> var1);
    Page<T> findAll(Specification<T> var1, Pageable var2);
    List<T> findAll(Specification<T> var1, Sort var2);
    long count(Specification<T> var1);
}

但是在MongoRepository中,没有办法使用这样的功能。我尝试使用QueryByExampleExecutor,但它非常有限示例我想要过滤年份为>5 和 <20 的数据,该怎么做?但是我想要动态生成的查询

你可以参考下面的代码:

@Repository
public class DataRepository {`enter code here`
    @Autowired
    MongoTemplate mongoTemplate;
    public Page<Data> filterData(SearchDTO searchDTO){
        List<Data> list = null;
        Integer offset = Optional.ofNullable(searchDTO.getOffset()).orElse(0);
        Integer limit = Optional.ofNullable(searchDTO.getLimit()).orElse(10);
        int page = offset / limit;
        Pageable pageable = PageRequest.of(page, limit);
        Query query = new Query();
        /** your filter condition */
        // if (!StringUtils.isEmpty(searchDTO.getName())) {
    //      query.addCriteria(Criteria.where("name").is(searchDTO.getName()));
    //   }
        query.with(pageable);
        list = mongoTemplate.find(query, Data.class);
        return PageableExecutionUtils.getPage(list, pageable,
         ()-> mongoTemplate.count(query, Data.class));
      }
}

相关内容

  • 没有找到相关文章

最新更新