mongodb分页查询

来源:互联网 发布:机器人与人工智能大会 编辑:程序博客网 时间:2024/06/07 23:06

1.分页实现类

SpringDataPageable.java

package com.ceair.dao;import java.io.Serializable;import org.springframework.data.domain.Pageable;import org.springframework.data.domain.Sort;public class SpringDataPageable implements Serializable, Pageable {private static final long serialVersionUID = 1;// 当前页private Integer pagenumber = 1;// 当前页面条数private Integer pagesize = 1000;// 排序条件private Sort sort;// 当前页面@Overridepublic int getPageNumber() {return getPagenumber();}// 每一页显示的条数@Overridepublic int getPageSize() {return getPagesize();}// 第二页所需要增加的数量@Overridepublic int getOffset() {return (getPagenumber() - 1) * getPagesize();}@Overridepublic Sort getSort() {return sort;}public Integer getPagenumber() {return pagenumber;}public void setPagenumber(Integer pagenumber) {this.pagenumber = pagenumber;}public Integer getPagesize() {return pagesize;}public void setPagesize(Integer pagesize) {this.pagesize = pagesize;}public void setSort(Sort sort) {this.sort = sort;}@Overridepublic Pageable first() {return null;}@Overridepublic boolean hasPrevious() {return false;}@Overridepublic Pageable next() {return null;}@Overridepublic Pageable previousOrFirst() {return null;}}

PageDao.java

package com.ceair.dao;import org.springframework.data.domain.Page;import org.springframework.data.domain.Sort;import org.springframework.data.mongodb.core.query.Query;/** * Title: 分页 <br/> * Description: <br/> *  * @author: wangzs <br/> * @date: 2017年5月10日 */public interface PageDao<E> {/** * @param pageNum *            开始页 * @param pagesize *            每页大小 * @param query *            查询条件 * @param sort *            排序条件 * @param collections *            集合名字 * @return */public Page<E> paginationQuery(Integer pageNum, Integer pagesize, Query query, Sort sort, Class collections);}

PageDaoImpl.java

package com.ceair.dao;import java.util.List;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.data.domain.Page;import org.springframework.data.domain.PageImpl;import org.springframework.data.domain.Sort;import org.springframework.data.mongodb.core.MongoTemplate;import org.springframework.data.mongodb.core.query.Query;/** * Title: 分页 impl <br/> * Description: <br/> *  * @author: wangzs <br/> * @date: 2017年5月10日 */public class PageDaoImpl<E> implements PageDao<E> {@Autowiredprivate MongoTemplate mongoTemplate;/** * @param pageNum *            开始页 * @param pagesize *            每页大小 * @param query *            查询条件 * @param sort *            排序条件 * @param collections *            集合名字 * @return */@Overridepublic Page<E> paginationQuery(Integer pageNum, Integer pagesize, Query query, Sort sort, Class collections) {SpringDataPageable pageable = new SpringDataPageable();// 开始页pageable.setPagenumber(pageNum);// 每页条数pageable.setPagesize(pagesize);// 排序pageable.setSort(sort);// 查询出一共的条数Long count = mongoTemplate.count(query, collections);// 查询List<E> list = mongoTemplate.find(query.with(pageable), collections);// 将集合与分页结果封装Page<E> pagelist = new PageImpl<E>(list, pageable, count);return pagelist;}}

2.测试实体bean

IndividualTemp.java

package com.ceair.bean;import java.util.Date;public class IndividualTemp {public IndividualTemp() {super();}public IndividualTemp(String partyId, boolean etermToTsdata, boolean tsdataToCmp, Date lastUpdateTime) {super();this.partyId = partyId;this.etermToTsdata = etermToTsdata;this.tsdataToCmp = tsdataToCmp;this.lastUpdateTime = lastUpdateTime;}private String partyId;private boolean etermToTsdata;// 根据黑屏刷新tsdata数据标识private boolean tsdataToCmp;// 根据tsdata刷新cmp行程标识private Date lastUpdateTime;public String getPartyId() {return partyId;}public void setPartyId(String partyId) {this.partyId = partyId;}public boolean isEtermToTsdata() {return etermToTsdata;}public void setEtermToTsdata(boolean etermToTsdata) {this.etermToTsdata = etermToTsdata;}public boolean isTsdataToCmp() {return tsdataToCmp;}public void setTsdataToCmp(boolean tsdataToCmp) {this.tsdataToCmp = tsdataToCmp;}public Date getLastUpdateTime() {return lastUpdateTime;}public void setLastUpdateTime(Date lastUpdateTime) {this.lastUpdateTime = lastUpdateTime;}@Overridepublic String toString() {return "IndividualTemp [partyId=" + partyId + ", etermToTsdata=" + etermToTsdata + ", tsdataToCmp=" + tsdataToCmp + ", lastUpdateTime="+ lastUpdateTime + "]";}}

3.测试类

IndividualTempPageTest.java

package com.ceair.data;import java.util.ArrayList;import java.util.List;import org.junit.Test;import org.junit.runner.RunWith;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.data.domain.Page;import org.springframework.data.domain.Sort;import org.springframework.data.domain.Sort.Direction;import org.springframework.data.domain.Sort.Order;import org.springframework.data.mongodb.core.query.Query;import org.springframework.test.context.ContextConfiguration;import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;import com.ceair.bean.Individual;import com.ceair.bean.IndividualTemp;import com.ceair.dao.PageDao;/** * Title: IndividualTemp分页测试 <br/> * Description: <br/> *  * @author: wangzs <br/> * @date: 2017年5月10日 */@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(locations = { //"classpath*:beans/applicationContext-*.xml", //"classpath*:spring/applicationContext-*.xml"//})public class IndividualTempPageTest {private static final Logger logger = LoggerFactory.getLogger(IndividualTempPageTest.class);@Autowiredprivate PageDao<IndividualTemp> pageDao;@Testpublic void testCopyIndividual() {Query query = new Query();List<Order> orders = new ArrayList<Order>(); // 排序orders.add(new Order(Direction.ASC, "partyId"));Sort sort = new Sort(orders);for (int i = 1; i < 1500; i++) {Page<IndividualTemp> pages = pageDao.paginationQuery(i, 10, query, sort, IndividualTemp.class);for (IndividualTemp temp : pages) {System.out.println(temp);}System.out.println("page=" + i);logger.info("page=" + i);}}}


1 0
原创粉丝点击