spring data MongoDB分页

来源:互联网 发布:阿里云网站空间误删 编辑:程序博客网 时间:2024/05/17 06:49

首页创建分页类

Pagination.java

Java代码  收藏代码
  1. package com.mkfree.framework.common.page;  
  2.   
  3. import java.util.List;  
  4.   
  5. /** 
  6.  * 分页数据类 
  7.  *  
  8.  * @author hk 
  9.  *  
  10.  *         2012-10-26 下午8:23:15 
  11.  */  
  12. public class Pagination{  
  13.   
  14.     /** 
  15.      * 一页数据默认20条 
  16.      */  
  17.     private int pageSize = 20;  
  18.     /** 
  19.      * 当前页码 
  20.      */  
  21.     private int pageNo;  
  22.   
  23.     /** 
  24.      * 上一页 
  25.      */  
  26.     private int upPage;  
  27.   
  28.     /** 
  29.      * 下一页 
  30.      */  
  31.     private int nextPage;  
  32.     /** 
  33.      * 一共有多少条数据 
  34.      */  
  35.     private long totalCount;  
  36.   
  37.     /** 
  38.      * 一共有多少页 
  39.      */  
  40.     private int totalPage;  
  41.     /** 
  42.      * 数据集合 
  43.      */  
  44.     private Listdatas;  
  45.   
  46.     /** 
  47.      * 分页的url 
  48.      */  
  49.     private String pageUrl;  
  50.   
  51.     /** 
  52.      * 获取第一条记录位置 
  53.      *  
  54.      * @return 
  55.      */  
  56.     public int getFirstResult() {  
  57.         return (this.getPageNo() - 1) * this.getPageSize();  
  58.     }  
  59.   
  60.     /** 
  61.      * 获取最后记录位置 
  62.      *  
  63.      * @return 
  64.      */  
  65.     public int getLastResult() {  
  66.         return this.getPageNo() * this.getPageSize();  
  67.     }  
  68.   
  69.     /** 
  70.      * 计算一共多少页 
  71.      */  
  72.     public void setTotalPage() {  
  73.         this.totalPage = (int) ((this.totalCount % this.pageSize > 0) ? (this.totalCount / this.pageSize + 1)  
  74.                 : this.totalCount / this.pageSize);  
  75.     }  
  76.   
  77.     /** 
  78.      * 设置 上一页 
  79.      */  
  80.     public void setUpPage() {  
  81.         this.upPage = (this.pageNo > 1) ? this.pageNo - 1 : this.pageNo;  
  82.     }  
  83.   
  84.     /** 
  85.      * 设置下一页 
  86.      */  
  87.     public void setNextPage() {  
  88.         this.nextPage = (this.pageNo == this.totalPage) ? this.pageNo : this.pageNo + 1;  
  89.     }  
  90.   
  91.     public int getNextPage() {  
  92.         return nextPage;  
  93.     }  
  94.   
  95.     public int getTotalPage() {  
  96.         return totalPage;  
  97.     }  
  98.   
  99.     public int getUpPage() {  
  100.         return upPage;  
  101.     }  
  102.   
  103.     public int getPageSize() {  
  104.         return pageSize;  
  105.     }  
  106.   
  107.     public void setPageSize(int pageSize) {  
  108.         this.pageSize = pageSize;  
  109.     }  
  110.   
  111.     public int getPageNo() {  
  112.         return pageNo;  
  113.     }  
  114.   
  115.     public void setPageNo(int pageNo) {  
  116.         this.pageNo = pageNo;  
  117.     }  
  118.   
  119.     public long getTotalCount() {  
  120.         return totalCount;  
  121.     }  
  122.   
  123.     public void setTotalCount(long totalCount2) {  
  124.         this.totalCount = totalCount2;  
  125.     }  
  126.   
  127.     public ListgetDatas() {  
  128.         return datas;  
  129.     }  
  130.   
  131.     public void setDatas(Listdatas) {  
  132.         this.datas = datas;  
  133.     }  
  134.   
  135.     public String getPageUrl() {  
  136.         return pageUrl;  
  137.     }  
  138.   
  139.     public void setPageUrl(String pageUrl) {  
  140.         this.pageUrl = pageUrl;  
  141.     }  
  142.   
  143.     public Pagination(int pageNo, int pageSize, long totalCount2) {  
  144.         this.setPageNo(pageNo);  
  145.         this.setPageSize(pageSize);  
  146.         this.setTotalCount(totalCount2);  
  147.         this.init();  
  148.     }  
  149.   
  150.     /** 
  151.      * 初始化计算分页 
  152.      */  
  153.     private void init() {  
  154.         this.setTotalPage();// 设置一共页数  
  155.         this.setUpPage();// 设置上一页  
  156.         this.setNextPage();// 设置下一页  
  157.     }  
  158. }  

 然后,我们看回

MongodbBaseDao.java 添加了以下分页的代码

Java代码  收藏代码
  1. package com.mkfree.framework.common.mongodb;  
  2.   
  3. import java.util.List;  
  4.   
  5. import org.springframework.data.mongodb.core.MongoTemplate;  
  6. import org.springframework.data.mongodb.core.query.Query;  
  7. import org.springframework.data.mongodb.core.query.Update;  
  8.   
  9. import com.mkfree.framework.common.page.Pagination;  
  10.   
  11. /** 
  12.  * mongodb 基础操作类 
  13.  *  
  14.  * @author oyhk 
  15.  *  
  16.  *         2013-1-22下午5:28:26 
  17.  */  
  18. public abstract class MongodbBaseDao{  
  19.   
  20.     /** 
  21.      * 通过条件查询,查询分页结果 
  22.      *  
  23.      * @param pageNo 
  24.      * @param pageSize 
  25.      * @param query 
  26.      * @return 
  27.      */  
  28.     public PaginationgetPage(int pageNo, int pageSize, Query query) {  
  29.         long totalCount = this.mongoTemplate.count(query, this.getEntityClass());  
  30.         Paginationpage = new Pagination(pageNo, pageSize, totalCount);  
  31.         query.skip(page.getFirstResult());// skip相当于从那条记录开始  
  32.         query.limit(pageSize);// 从skip开始,取多少条记录  
  33.         Listdatas = this.find(query);  
  34.         page.setDatas(datas);  
  35.         return page;  
  36.     }  
  37.         //.......其他代码,请下载源代码吧  
  38. }  

 源代码下载:http://blog.mkfree.com/posts/47

0 0
原创粉丝点击