package com.ruoyi.interchange.util;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.data.mongodb.core.MongoTemplate;
|
import org.springframework.data.mongodb.core.query.Query;
|
import org.springframework.stereotype.Component;
|
|
import java.util.List;
|
|
@Component
|
public class MongoDBPageUtils {
|
@Autowired
|
private static MongoTemplate mongoTemplate;
|
|
@Autowired
|
public void setMongoTemplate(MongoTemplate mongoTemplate) {
|
MongoDBPageUtils.mongoTemplate = mongoTemplate;
|
}
|
|
/**
|
* MongDb分页公共方法
|
*
|
* @param clazz 实体类的class对象
|
* @param pageSize 每页的数量
|
* @param pageNum 当前的页数
|
* @param query query是啥不知道赶紧去查下,相当于sql语句
|
* @return
|
*/
|
public static <T> PageResult<T> pagination(Class<T> clazz, int pageNum, int pageSize, Query query) {
|
long total = 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;
|
}
|
}
|