mongo分页
<h5>mongo分页</h5>
<pre><code>package com.cf.common;
import com.github.pagehelper.PageInfo;
import org.springframework.data.mongodb.core.query.Query;
/**
* Mongo分页封装
*
* @author jxd
* @version 1.0 *
* @date 2020/11/11 10:51
*/
public class MongoPageUtil {
/**
* 分页处理
*
* @return
* @author jxd
* @date 2020/11/11 12:00
*/
public static void wrapPageQuery(Query query, Integer currentPage, Integer pageSize) {
query.skip((currentPage - 1) * pageSize);
query.limit(pageSize);
}
/**
* 包装返回结果
*
* @param pageInfo
* @param totalSize
* @param currentPage
* @param pageSize
* @return
* @author jxd
* @date 2020/11/11 12:15
*/
public static void wrapPageInfo(PageInfo pageInfo, Integer totalSize, Integer currentPage, Integer pageSize) {
long pages = totalSize % pageSize == 0 ? totalSize / pageSize : totalSize / pageSize + 1L;
pageInfo.setPages((int) pages);
pageInfo.setTotal(totalSize);
pageInfo.setPageSize(pageSize);
pageInfo.setPageNum(currentPage);
}
}
</code></pre>
<h5>应用</h5>
<pre><code>@Override
public PageInfo queryList(RedemptionCodeRecordDto redemptionCodeRecordDto) {
Query query = new Query();
Set<String> parmas = new HashSet<>();
renderParamasSet(parmas);
JSONObject redemptionCodeRecordDtoJson = (JSONObject) JSONObject.toJSON(redemptionCodeRecordDto);
parmas.forEach(x -> {
String v = redemptionCodeRecordDtoJson.getString(x);
if (StringUtils.isNotBlank(v)) {
query.addCriteria(Criteria.where(x).is(v));
}
});
query.with(new Sort(new Sort.Order(Sort.Direction.DESC, "redemptionDate")));
Integer currentPage = redemptionCodeRecordDto.getCurrentPage();
Integer pageSize = redemptionCodeRecordDto.getPageSize();
MongoPageUtil.wrapPageQuery(query, currentPage, pageSize);
long total = centerMongoTemplate.count(query, RedemptionCodeRecordDto.class, redemtionCodeRecord);
List<RedemptionCodeRecordDto> list = centerMongoTemplate.find(query, RedemptionCodeRecordDto.class, redemtionCodeRecord);
for (RedemptionCodeRecordDto codeRecordDto : list) {
codeRecordDto.setRedemptionStatus(CommonEnum.renderRedemptionStatus(codeRecordDto.getRedemptionStatus()));
}
PageInfo pageInfo = new PageInfo(list);
MongoPageUtil.wrapPageInfo(pageInfo, (int) total, currentPage, pageSize);
return pageInfo;
}</code></pre>
<h5>新增索引</h5>
<pre><code> public void addIndexForMongo(){
Index index=new Index();
//name 字段新增索引
index.on("name", Sort.Direction.DESC);
//表名
mongoTemplate.indexOps("user").ensureIndex(index);
}</code></pre>
<h5>查看索引</h5>
<pre><code>public void getIndexForMongo(){
List<IndexInfo> indexList = mongoTemplate.indexOps("user").getIndexInfo();
for (IndexInfo indexInfo : indexList) {
System.out.println(indexInfo.getName());
}
}</code></pre>