線上直播原始碼,java資料分頁幾種方式

zhibo系統開發發表於2023-05-09

線上直播原始碼,java資料分頁幾種方式

1.使用PageUtils

Service:
  /**
     * 分頁查詢
     *
     * @param params 查詢條件
     * @return PageUtils
     */
    PageUtils queryPage(Map<String, Object> params);
    
ServiceImpl:
  Page<資料庫物件實體> page = this.selectPage(
                new Query<資料庫物件實體>(params).getPage(),
                new EntityWrapper<資料庫物件實體>()
                //MybatisPlus sql語句
                        .eq(欄位,"匹配值")
                        //具體用法詳情百度
                        .orderBy(按照排序的資料庫欄位, true)
        );
        return new PageUtils(page);


2.使用Page

Service:
    /**
     * 分頁查詢
     * @param params 查詢條件
     * @return 
     */
    Page<資料庫物件實體>  queryPage(Map<String, Object> params);
    
ServiceImpl:
  Page<資料庫物件實體> page = new Page<>(Public.mapTo(params.get("page"), 1), Public.mapTo(params.get("pageSize"), 10));
  //可以手寫sql,提高sql的靈活性(但是題主人懶,還是喜歡使用 MysqlbatisPlus 那種方式),但是可以鍛鍊你的SQL書寫能力
        List<資料庫物件實體> list = Dao.方法名(page, params);
        Page<資料庫物件實體> pageInfo = page.setRecords(list);
        return pageInfo;
        
Dao:
List<資料庫物件實體> 方法名 (Pagination page,Map<String, Object> map);
//具體的SQL就不寫了


3.Jpa分頁


需要一個分頁類   Page4Navigator

Page<T> pageFromJPA;
    int navigatePages;
     
    int totalPages;
 
    int number;
     
    long totalElements;
     
    int size;
 
    int numberOfElements;
 
    List<T> content;
 
    boolean isHasContent;
 
    boolean first;
 
    boolean last;
     
    boolean isHasNext;
 
    boolean isHasPrevious;
     
    int[] navigatepageNums;
     
    public Page4Navigator() {
        //這個空的分頁是為了 Redis 從 json格式轉換為 Page4Navigator 物件而專門提供的
    }
     
    public Page4Navigator(Page<T> pageFromJPA,int navigatePages) {
        this.pageFromJPA = pageFromJPA;
        this.navigatePages = navigatePages;
         
        totalPages = pageFromJPA.getTotalPages();
         
        number  = pageFromJPA.getNumber() ;
         
        totalElements = pageFromJPA.getTotalElements();
         
        size = pageFromJPA.getSize();
         
        numberOfElements = pageFromJPA.getNumberOfElements();
         
        content = pageFromJPA.getContent();
         
        isHasContent = pageFromJPA.hasContent();
                 
        first = pageFromJPA.isFirst();
         
        last = pageFromJPA.isLast();
         
        isHasNext = pageFromJPA.hasNext();
         
        isHasPrevious  = pageFromJPA.hasPrevious();       
         
        calcNavigatepageNums();
         
    }
 
    private void calcNavigatepageNums() {
        int navigatepageNums[];
        int totalPages = getTotalPages();
        int num = getNumber();
        //當總頁數小於或等於導航頁碼數時
        if (totalPages <= navigatePages) {
            navigatepageNums = new int[totalPages];
            for (int i = 0; i < totalPages; i++) {
                navigatepageNums[i] = i + 1;
            }
        } else { //當總頁數大於導航頁碼數時
            navigatepageNums = new int[navigatePages];
            int startNum = num - navigatePages / 2;
            int endNum = num + navigatePages / 2;
 
            if (startNum < 1) {
                startNum = 1;
                //(最前navigatePages頁
                for (int i = 0; i < navigatePages; i++) {
                    navigatepageNums[i] = startNum++;
                }
            } else if (endNum > totalPages) {
                endNum = totalPages;
                //最後navigatePages頁
                for (int i = navigatePages - 1; i >= 0; i--) {
                    navigatepageNums[i] = endNum--;
                }
            } else {
                //所有中間頁
                for (int i = 0; i < navigatePages; i++) {
                    navigatepageNums[i] = startNum++;
                }
            }
        }  
        this.navigatepageNums = navigatepageNums;
    }


 以上就是 線上直播原始碼,java資料分頁幾種方式,更多內容歡迎關注之後的文章


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69978258/viewspace-2950943/,如需轉載,請註明出處,否則將追究法律責任。

相關文章