springboot mongodb分页查询
springboot jpa mongodb
public Page<Recorded> getRecordeds(Integer page, Integer size, Recorded recorded) { if (page<1){ page=1; } Sort sort = new Sort(Sort.Direction.DESC,"createTime"); Pageable pageable = new PageRequest(page-1,size,sort); Query query = new Query(); //条件id =XX Criteria criteria = Criteria.where("callerId").is(recorded.getCallerId()); criteria.and(“status”).is(Recorded.SUCCESS); if(startTime!=null&&endTime!=null){ criteria.andOperator( Criteria.where("createTime").gte(startTime), Criteria.where("createTime").lt(endTime) ); } query.addCriteria(criteria); //mongoTemplate.count计算总数 long total = mongoTemplate.count(query, Recorded.class); // mongoTemplate.find 查询结果集 List<Recorded> items = mongoTemplate.find(query.with(pageable), Recorded.class); return new PageImpl(items, pageable, total); }
分页
package com.tk.portal.utils; import java.util.List; /** * mongoDb分页对象 */ public class PageResult<T> { //当前业 private Integer pageNum; //每页的数量 private Integer pageSize; //总共的条数 private Long total; //总共的页数 private Integer pages; //实体类集合 private List<T> list; public Integer getPageNum() { return pageNum; } public void setPageNum(Integer pageNum) { this.pageNum = pageNum; } public Integer getPageSize() { return pageSize; } public void setPageSize(Integer pageSize) { this.pageSize = pageSize; } public Long getTotal() { return total; } public void setTotal(Long total) { this.total = total; } public Integer getPages() { return pages; } public void setPages(Integer pages) { this.pages = pages; } public List<T> getList() { return list; } public void setList(List<T> list) { this.list = list; } }
/** * MongDb分页公共方法 * @param clazz 实体类的class对象 * @param pageSize 每页的数量 * @param pageNum 当前的页数 * @param query query是啥不知道赶紧去查下,相当于sql语句 * @return */ public PageResult<T> pagination(Class<T> clazz, int pageSize, int pageNum, Query query) { long total = this.mongoTemplate.count(query, clazz); Integer pages = (int)Math.ceil((double)total / (double)pageSize); if (pageNum <= 0 || pageNum > pages) { pageNum = 1; } int skip = pageSize * (pageNum - 1); query.skip(skip).limit(pageSize); List<T> list = mongoTemplate.find(query, clazz); PageResult pageResult = new PageResult(); pageResult.setTotal(total); pageResult.setPages(pages); pageResult.setPageSize(pageSize); pageResult.setPageNum(pageNum); pageResult.setList(list); return pageResult; }
下一篇:
布隆过滤器解决Redis缓存穿透