1. service層 封裝

package com.example.demo.service; import java.util.List; import org.springframework.data.domain.Pageable; public abstract class Page<T> { private Integer page;//頁數 private Integer size;//每頁數量 private Number total;//總數 private List<T> content; public Page(Pageable pageable) { total = count(); page = pageable.getPageNumber(); size = pageable.getPageSize(); if(page <= 0) { page = 1; } long end = (long)page*size; long start = end - size; content = search(start , end); } /** * 獲取總數 */ protected abstract Number count(); /** * 查詢結果 */ protected List<T> search(Long start , Long end){ return null; } public Integer getPage() { return page; } public void setPage(Integer page) { this.page = page; } public Integer getSize() { return size; } public void setSize(Integer size) { this.size = size; } public List<T> getContent() { return content; } public void setContent(List<T> content) { this.content = content; } }
2.控制層@PageableDefault 的使用: @PageableDefault Pageable pagealbe
傳遞參數的時候 , 需要傳遞page(當前頁數,沒有的話默認為1),size(每頁數據記錄數,沒有的話默認為10);
3.eg service層 , 查詢Student
Page<Student> getStudentList(Pageable pageable ,Long start , Long end);
ServiceImpl
Page<Student> getStudentList(Pageable pageable , Long start , Long end){
return new Page<Student>{
@Override
protected Number count() {
return studentMapper.count();
}
@Override
protected List<Student> search(Long start, Long end){
return studentMapper.list(start , end);
}
}
}