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;
}