一、自定义工具类
package com.juiniot.modules.ship.ais.util;
/**
* @ClassName SpringDataPageable
* @Author jiege
* @Date 2021/4/30 10:18
**/
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 = 10;
// 排序条件
private Sort sort;
// 当前页面
@Override
public int getPageNumber() {
return getPagenumber();
}
// 每一页显示的条数
@Override
public int getPageSize() {
return getPagesize();
}
// 第二页所需要增加的数量
public long getOffset() {
return (getPagenumber() - 1) * getPagesize();
}
@Override
public 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;
}
@Override
public Pageable first() {
// TODO Auto-generated method stub
return null;
}
@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;
}
}
二、service层
//分页
public Page<AisShipRealtimeEntity> paginationQuery(Integer pageNum);
三、Impl
public Page<AisShipRealtimeEntity> paginationQuery(Integer pageNum) {
SpringDataPageable pageable = new SpringDataPageable();
Query query = new Query();
List<Sort.Order> orders = new ArrayList<Sort.Order>(); //排序
orders.add(new Sort.Order(Sort.Direction.DESC, "createTime"));
Sort sort = new Sort(orders);
// 开始页
pageable.setPagenumber(pageNum);
// 每页条数
pageable.setPagesize(10);
// 排序
pageable.setSort(sort);
// 查询出一共的条数
Long count = mongoTemplate.count(query, AisShipRealtimeEntity.class);
// 查询
List<AisShipRealtimeEntity> list = mongoTemplate.find(query.with(pageable), AisShipRealtimeEntity.class);
// 将集合与分页结果封装
Page<AisShipRealtimeEntity> pagelist = new PageImpl<AisShipRealtimeEntity>(list, pageable, count);
return pagelist;
}
四、controller
Page<AisShipRealtimeEntity> list = aisShipRealtimeService.paginationQuery(limit);
System.out.println(list);