天天看點

mongotemplate 查list_基于springframework.data.mongodb MongoTemplate 實作分頁,多條件,排序查詢...

第一步:實作分頁工具類package com.zqwm.fly.types;

import lombok.Data;

import java.util.List;

@Data

public class PageModel

{

private List datas;

private int rowCount;

private int pageSize=20;

private int pageNo=1;

private int skip=0;

public int TotalPages() {return(rowCount+pageSize-1)/pageSize;}

}

第二步:實作分頁//分頁 排序 多條件過濾

public PageModel findByPage(PageModel page,Integer pageIndex, Integer pageSize, Map params, String cellection)

{

//建立排序模闆Sort

Sort sort = new Sort(Sort.Direction.DESC, "id");

//建立分頁模闆Pageable

Pageable pageable = new PageRequest((pageIndex-1)*pageSize, pageSize, sort);

//建立查詢條件對象

Query query = new Query();

if ((params != null) && (!(params.isEmpty())))

{

for (String key : params.keySet()) {

query.addCriteria(new Criteria(key).is(params.get(key)));

}

}

//mongoTemplate.count計算總數

long total = mongoTemplate.count(query,getClz(),cellection);

page.setRowCount((int)total);

// mongoTemplate.find 查詢結果集

List items = (List) mongoTemplate.find(query.with(pageable),getClz(),cellection);

page.setPageNo(pageIndex);

page.setPageSize(pageSize);

page.setDatas(items);

return page;

}