springboot干货——(十四【二】)mongodb进行分页显示【含条件查询】
·
本博客部分内容建立在上篇博客基础之上springboot干货——(十四【一】)整合mongodb
1.项目结构
2.新建分页模型PageModel类
package com.gwd.model;
import java.io.Serializable;
import org.springframework.data.domain.Sort;
/**
* @FileName PageModel.java
* @Description:分页模型
* @author JackHisen(gu.weidong)
* @version V1.0
* @createtime 2018年3月15日 下午3:39:35
* 修改历史:
* 时间 作者 版本 描述
*====================================================
*/
public class PageModel implements Serializable{
/**
* @Fields: serialVersionUID
* @Todo: TODO
*/
private static final long serialVersionUID = 1L;
// 当前页
private Integer pagenumber = 1;
// 当前页面条数
private Integer pagesize = 10;
// 排序条件
private Sort 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 Sort getSort() {
return sort;
}
public void setSort(Sort sort) {
this.sort = sort;
}
}
3.新建分页公共类SpringbootPageable,实现 Pageable 接口
引入分页基础模型pageModel
package com.gwd.service.impl;
import java.io.Serializable;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import com.gwd.model.PageModel;
/**
* @FileName SpringDataPageable.java
* @Description:分页公共类
* @author JackHisen(gu.weidong)
* @version V1.0
* @createtime 2018年3月15日 上午11:23:03
* 修改历史:
* 时间 作者 版本 描述
*====================================================
*/
public class SpringbootPageable implements Serializable,Pageable{
/**
* @Fields: serialVersionUID
* @Todo: TODO
*/
private static final long serialVersionUID = 1L;
PageModel page;
public PageModel getPage() {
return page;
}
public void setPage(PageModel page) {
this.page = page;
}
@Override
public Pageable first() {
// TODO Auto-generated method stub
return null;
}
@Override
public int getOffset() {
// TODO Auto-generated method stub
return (page.getPagenumber() - 1) * page.getPagesize();
}
@Override
public int getPageNumber() {
// TODO Auto-generated method stub
return page.getPagenumber();
}
@Override
public int getPageSize() {
// TODO Auto-generated method stub
return page.getPagesize();
}
@Override
public boolean hasPrevious() {
// TODO Auto-generated method stub
return false;
}
@Override
public Pageable next() {
// TODO Auto-generated method stub
return null;
}
@Override
public Pageable previousOrFirst() {
// TODO Auto-generated method stub
return null;
}
@Override
public Sort getSort() {
// TODO Auto-generated method stub
return page.getSort();
}
}
4.服务层接口及实现类
package com.gwd.service;
import org.springframework.data.domain.Page;
import com.gwd.model.User;
/**
* @FileName UserSevice.java
* @Description:TODO
* @author JackHisen(gu.weidong)
* @version V1.0
* @createtime 2018年3月15日 上午11:28:08
* 修改历史:
* 时间 作者 版本 描述
*====================================================
*
*/
public interface UserSevice {
public Page<User> paginationQuery(Integer pageNum);
}
package com.gwd.service.impl;
import java.util.ArrayList;
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.domain.Sort.Direction;
import org.springframework.data.domain.Sort.Order;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Service;
import com.gwd.model.PageModel;
import com.gwd.model.User;
import com.gwd.service.UserSevice;
/**
* @FileName UserServiceImpl.java
* @Description:TODO
* @author JackHisen(gu.weidong)
* @version V1.0
* @createtime 2018年3月15日 上午11:29:23
* 修改历史:
* 时间 作者 版本 描述
*====================================================
*/
@Service
public class UserServiceImpl implements UserSevice{
@Autowired
private MongoTemplate mongoTemplate;
@Override
public Page<User> paginationQuery(Integer pageNum) {
SpringbootPageable pageable = new SpringbootPageable();
PageModel pm=new PageModel();
Query query = new Query();
List<Order> orders = new ArrayList<Order>(); //排序
orders.add(new Order(Direction.DESC, "age"));
Sort sort = new Sort(orders);
// 开始页
pm.setPagenumber(pageNum);
// 每页条数
pm.setPagesize(5);
// 排序
pm.setSort(sort);
pageable.setPage(pm);
// 查询出一共的条数
Long count = mongoTemplate.count(query, User.class);
// 查询
List<User> list = mongoTemplate.find(query.with(pageable), User.class);
// 将集合与分页结果封装
Page<User> pagelist = new PageImpl<User>(list, pageable, count);
return pagelist;
}
}
测试:
@RequestMapping("/testMongoTemplate")
@ResponseBody
public String testMongoTemplate() {
int i=100;
long j=0L;
while(i>0) {
mongoTemplate.save(new User(i-j, "gwd", i));
i--;
}
Page<User> paginationQuery = userService.paginationQuery(2);
for(User u:paginationQuery) {
System.out.println(u.getAge());
}
return null;
}
条件查询如下:
Query query=new Query(Criteria.where("username").is("mama"));
List<User> find = mongoTemplate.find(query, User.class);
更多推荐
所有评论(0)