关于Spring MongoDB的分页查询

Spring MongoDB的分页查询 以及多字段模糊查询


分页查询

Spring MongoDB的相关分页查询,例如:
返回值类

public class ResultData {
    private String status; //OK/SUCCESS,E100,E201,FAILED
    private String message;//SUCCESS,
    private Object data;
    public String getStatus() {
        return status;
    }
    public void setStatus(String status) {
        this.status = status;
    }
    public String getMessage() {
        return message;
    }
    public void setMessage(String message) {
        this.message = message;
    }
    public Object getData() {
        return data;
    }
    public void setData(Object data) {
        this.data = data;
    }
    }

分页工具类

public class PageModel<T>{
    //结果集 
   private List<T> datas; 
   //查询记录数 
   private int rowCount; 
   //每页多少条数据 
   private int pageSize= 20;
   //第几页 
   private int pageNo=1;
   //跳过几条数
   private int skip=0; 
   /**
     * 总页数
     * @return
     */ 
   public int getTotalPages(){ 
        return(rowCount+pageSize-1)/pageSize; 
   }

   public List<T>getDatas() {
      return datas;
   }
   public void setDatas(List<T>datas) {
      this.datas = datas;
   }
   public int getRowCount() {
      return rowCount;
   }
   public void setRowCount(int rowCount) {
      this.rowCount = rowCount;
   }
   public int getPageSize() {
      return pageSize;
   }
   public void setPageSize(int pageSize) {
      this.pageSize = pageSize;
   }
   public int getSkip() {
      skip=(pageNo-1)*pageSize;
      return skip;
   }
   public void setSkip(int skip) {
      this.skip = skip;
   }

   public int getPageNo() {
      return pageNo;
   }

   public void setPageNo(int pageNo) {
      this.pageNo = pageNo;
   }

@Override
public String toString() {
    return "PageModel [datas=" + datas + ", rowCount=" + rowCount + ", pageSize=" + pageSize + ", pageNo=" + pageNo
            + ", skip=" + skip + "]";
} 



}

分页查询action方法


@RequestMapping(value = "/selectData", method = RequestMethod.GET)
    @ResponseBody
    public ResultData getData(@RequestParam(value = "name", required = false, defaultValue = "1") int name) {
        ResultData resultData = new ResultData();
        PageModel<Data> page = new PageModel<Data>();
        try {

            page.setPageNo(name);
            page.setPageSize(2);
            page = dao.getData(page, new BasicDBObject(), "data");
            resultData.setStatus(Constant.SUCCESS);
            resultData.setMessage("成功");
            resultData.setData(page);
            return resultData;// sites

        } catch (Exception e) {

            logger.error("时间:用户查询数据失败", e);
            resultData.setStatus(Constant.ERROR);
            resultData.setMessage("查询数据出错:" + e.getMessage());
            return resultData;
        }

    }

分类查询的daoImpl

@Autowired
    private MongoTemplate mongoTemplate;
@Override
    public PageModel<Data> getData(PageModel<Data> page, BasicDBObject basicDBObject, String string) {
        Query query=new BasicQuery(basicDBObject);
          //查询总数
          int count=(int) mongoTemplate.count(query,Data.class);
          page.setRowCount(count);

          //排序
             query.with(new Sort(Direction.ASC, "_id"));
            query.skip(page.getSkip()).limit(page.getPageSize());
          List<Data>datas=mongoTemplate.find(query,Data.class);
          page.setDatas(datas);
          return page;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值