oyhk 学习笔记
spring MongoDB 集成(分页),这次的分页功能.是在spring MongoDB 集成crud操作(简单封装)基础上添加的,希望对操作spring mongodb 集成的朋友们有所帮助,那么,直接看代码吧..
首页创建分页类
Pagination.java
package com.mkfree.framework.common.page;
import java.util.List;
/**
* 分页数据类
*
* @author hk
*
* 2012-10-26 下午8:23:15
*/
public class Pagination{
/**
* 一页数据默认20条
*/
private int pageSize = 20;
/**
* 当前页码
*/
private int pageNo;
/**
* 上一页
*/
private int upPage;
/**
* 下一页
*/
private int nextPage;
/**
* 一共有多少条数据
*/
private long totalCount;
/**
* 一共有多少页
*/
private int totalPage;
/**
* 数据集合
*/
private Listdatas;
/**
* 分页的url
*/
private String pageUrl;
/**
* 获取第一条记录位置
*
* @return
*/
public int getFirstResult() {
return (this.getPageNo() - 1) * this.getPageSize();
}
/**
* 获取最后记录位置
*
* @return
*/
public int getLastResult() {
return this.getPageNo() * this.getPageSize();
}
/**
* 计算一共多少页
*/
public void setTotalPage() {
this.totalPage = (int) ((this.totalCount % this.pageSize > 0) ? (this.totalCount / this.pageSize + 1)
: this.totalCount / this.pageSize);
}
/**
* 设置 上一页
*/
public void setUpPage() {
this.upPage = (this.pageNo > 1) ? this.pageNo - 1 : this.pageNo;
}
/**
* 设置下一页
*/
public void setNextPage() {
this.nextPage = (this.pageNo == this.totalPage) ? this.pageNo : this.pageNo + 1;
}
public int getNextPage() {
return nextPage;
}
public int getTotalPage() {
return totalPage;
}
public int getUpPage() {
return upPage;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public int getPageNo() {
return pageNo;
}
public void setPageNo(int pageNo) {
this.pageNo = pageNo;
}
public long getTotalCount() {
return totalCount;
}
public void setTotalCount(long totalCount2) {
this.totalCount = totalCount2;
}
public ListgetDatas() {
return datas;
}
public void setDatas(Listdatas) {
this.datas = datas;
}
public String getPageUrl() {
return pageUrl;
}
public void setPageUrl(String pageUrl) {
this.pageUrl = pageUrl;
}
public Pagination(int pageNo, int pageSize, long totalCount2) {
this.setPageNo(pageNo);
this.setPageSize(pageSize);
this.setTotalCount(totalCount2);
this.init();
}
/**
* 初始化计算分页
*/
private void init() {
this.setTotalPage();// 设置一共页数
this.setUpPage();// 设置上一页
this.setNextPage();// 设置下一页
}
}
然后,我们看回
MongodbBaseDao.java 添加了以下分页的代码
package com.mkfree.framework.common.mongodb;
import java.util.List;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import com.mkfree.framework.common.page.Pagination;
/**
* mongodb 基础操作类
*
* @author oyhk
*
* 2013-1-22下午5:28:26
*/
public abstract class MongodbBaseDao{
/**
* 通过条件查询,查询分页结果
*
* @param pageNo
* @param pageSize
* @param query
* @return
*/
public PaginationgetPage(int pageNo, int pageSize, Query query) {
long totalCount = this.mongoTemplate.count(query, this.getEntityClass());
Paginationpage = new Pagination(pageNo, pageSize, totalCount);
query.skip(page.getFirstResult());// skip相当于从那条记录开始
query.limit(pageSize);// 从skip开始,取多少条记录
Listdatas = this.find(query);
page.setDatas(datas);
return page;
}
//.......其他代码,请下载源代码吧
}
源代码下载:http://blog.mkfree.com/posts/47