使用Pageable 分頁


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

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

    }

  }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM