MongoDB分页和条件查询
MongoDB 分页和条件查询
mongoDB 很多需求页面需要分页也需要条件查询,Spring Data MongoDB中就帮助我们实现了这一功能,所以只要记住怎么用就可以很轻松的写出。废话不多说。下面写出我现在正在写的代码,共大家参考参考,下面还有解释。
@Autowired
CmsPageRepository cmsPageRepository;
/**
* 查询每页的CmsPage
*
* @param page 当前页数
* @param size 每页显示的条数
* @param queryPageRequest 查询条件
* @return 返回每页的CmsPage
*/
public QueryResponseResult findList(int page, int size, QueryPageRequest queryPageRequest) {
page = page <= 0 ? 1 : page;
size = size > 10 ? 10 : size;
// 条件查询
// 页面名称使用模糊查询 站点id使用精确查询
ExampleMatcher exampleMatcher = ExampleMatcher.matching().withMatcher("pageAliase", ExampleMatcher.GenericPropertyMatchers.contains());
// 条件
CmsPage cmsPage = new CmsPage();
if (queryPageRequest != null){
if ( StringUtils.isNotEmpty(queryPageRequest.getPageAliase())) {
cmsPage.setPageAliase(queryPageRequest.getPageAliase());
}
if (StringUtils.isNotEmpty(queryPageRequest.getSiteId())) {
cmsPage.setSiteId(queryPageRequest.getSiteId());
}
}
Example<CmsPage> example = Example.of(cmsPage,exampleMatcher);
Page<CmsPage> cmsPagePages = cmsPageRepository.findAll(example,new PageRequest(page, size));
QueryResult<CmsPage> cmsPageQueryResult = new QueryResult<>();
if (cmsPagePages != null){
cmsPageQueryResult.setList(cmsPagePages.getContent()); //每页封装page
cmsPageQueryResult.setTotal(cmsPagePages.getTotalElements()); // 总条数
}
return new QueryResponseResult(CommonCode.SUCCESS,cmsPageQueryResult);
}
- 首先前面两行就不用我说了,就是防止前端传过来的数据不符合规定,所以就先做了下判断。
- .
ExampleMatcher exampleMatcher = ExampleMatcher.matching().withMatcher("pageAliase", ExampleMatcher.GenericPropertyMatchers.contains());
这一段代码就是把一个条件进行模糊查询,其中“pageAliase”就是模糊查询的条件。所以你们想用自己的条件的话,只需要把这个地方修改下就可以了。 - MongoDB有一张表对应的是CmsPage类。
- 根据前端传来的对象判断是哪个条件有值,有值的条件就set到CmsPage 这个对象中,注意;(如果要是想精确查询的话,不需要写第二步骤的代码,直接就set进去值就可以了)。
Example<CmsPage> example = Example.of(cmsPage,exampleMatcher);
把这个条件和查询方式放到这个里面就可以了。- 然后使用Spring Data MongoDB 里面的一个findAll();方法填写相对应的参数就可以了。这样就可以实现分页和条件查询。
还有和多查询方式我在下面也列举出来,当需要用到的可以看看这下面。
endWith | 以什么结尾 |
---|---|
startWith | 以什么开始查询 |
regex | 正则表达式查询 |
ignoreCase | 忽略大小写查询 |
contains | 模糊查询 |
还没有评论,来说两句吧...