亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java分頁查詢的幾種實現(xiàn)方法舉例

 更新時間:2023年06月27日 10:46:43   作者:Oliver_Liuqifan  
這篇文章主要給大家介紹了關于Java分頁查詢的幾種實現(xiàn)方法,分頁是系統(tǒng)中常用到的功能,只要涉及到查詢必定伴隨而來的就是分頁,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下

前言

最近在做需求的過程中遇到幾個需要分頁查詢的需求,我也對分頁有了較深的了解。分頁一般分為兩種一種是直接在sql中分頁,一種是在內存中分頁。本文僅針對內存中分頁做記錄。

第一種

如果是一個查詢接口,向接口中傳入page,和size(page默認值1,size默認值10)即可,返回參數是github的PageInfo,里面在放實際返回類型。

進入實現(xiàn)層,使用PageHelper,并調用pageQuery方法即可完成分頁,以下為Pagehelper的具體代碼 。(但需注意,此方法只適用于從數據庫中直接查出的數據,如果將查出的數據進行二次封裝則會導致分頁失?。?/p>

import com.github.pagehelper.Page;
import lombok.experimental.UtilityClass;
import org.springframework.beans.BeanUtils;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import java.util.List;
import java.util.Objects;
import java.util.function.Supplier;
/**
 * @author LIUQIFAN
 */
@UtilityClass
public class PageHelper {
    /**
     * 要求 請求參數: ?pageNum=xxx&pageSize=xxx
     *
     * @param supplier 查詢方法
     * @param <T>      類型對象
     * @return 結果集
     */
    public static <T> PageInfo<T> pageQuery(Supplier<List<T>> supplier) {
        ServletRequestAttributes attributes = (ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes(), "無法獲取request");
        Page<Object> page = com.github.pagehelper.PageHelper.startPage(attributes.getRequest());
        //========================
        List<T> list = supplier.get();
        PageInfo<T> pageInfo = new PageInfo<>();
        BeanUtils.copyProperties(page.toPageInfo(), pageInfo);
        pageInfo.setList(list);
        return pageInfo;
    }
    /**
     * @param pageNum  頁號
     * @param pageSize 每頁數據大小
     * @param <T>      類型
     * @return 結果集
     */
    public static <T> PageInfo<T> pageQuery(int pageNum, int pageSize, Supplier<List<T>> supplier) {
        Page<Object> page = com.github.pagehelper.PageHelper.startPage(pageNum, pageSize, true);
        List<T> list = supplier.get();
        PageInfo<T> pageInfo = new PageInfo<>();
        BeanUtils.copyProperties(page.toPageInfo(), pageInfo);
        pageInfo.setList(list);
        return pageInfo;
    }
    /**
     * @param supplier 查詢方法
     * @param <T>      類型對象
     * @return 結果集
     */
    public static <T> List<T> pQuery(Supplier<List<T>> supplier) {
        ServletRequestAttributes attributes = (ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes(), "無法獲取request");
        com.github.pagehelper.PageHelper.startPage(attributes.getRequest());
        //========================
        return supplier.get();
    }
    /**
     * @param pageNum  頁號
     * @param pageSize 每頁數據大小
     * @param <T>      類型
     * @return 結果集
     */
    public static <T> List<T> pQuery(int pageNum, int pageSize, Supplier<List<T>> supplier) {
        com.github.pagehelper.PageHelper.startPage(pageNum, pageSize, true);
        return supplier.get();
    }
}

第二種

這種方法是我第一次使用,把入參的page和size封裝成了對象PageDomain

PageDomain代碼如下

@Data
public class PageDomain1 {
    /**
     * 當前頁
     */
    private Integer page = 1;
    /**
     * 每頁數量
     */
    private Integer limit = 10;
    /**
     * 獲取開始的數據行
     */
    public Integer start() {
        return (this.page - 1) * this.limit;
    }
    /**
     * 獲取結束的數據行
     */
    public Integer end() {
        return this.page * this.limit;
    }
}

 這是控制層代碼

 這是實現(xiàn)層代碼,這里的resultList,是我們先從數據庫中查出來的結果集,再用PageUtils的Startpage方法進行分頁操作,最后組裝PageInfo返回體

下面是PageUtils的代碼

總結

到此這篇關于Java分頁查詢的幾種實現(xiàn)方法的文章就介紹到這了,更多相關Java分頁查詢內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 詳解Java注解教程及自定義注解

    詳解Java注解教程及自定義注解

    這篇文章主要為大家詳細介紹了Java注解教程及自定義注解,幫助大家更好地學習Java注解,感興趣的小伙伴們可以參考一下
    2016-01-01
  • springboot themaleaf 第一次進頁面不加載css的問題

    springboot themaleaf 第一次進頁面不加載css的問題

    這篇文章主要介紹了springboot themaleaf 第一次進頁面不加載css的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • Java編程中應用的GUI設計基礎

    Java編程中應用的GUI設計基礎

    這篇文章主要介紹了Java編程中應用的GUI設計基礎,為一些Java開發(fā)CS類型應用的基礎概念知識,需要的朋友可以參考下
    2015-10-10
  • SpringBoot入門實現(xiàn)第一個SpringBoot項目

    SpringBoot入門實現(xiàn)第一個SpringBoot項目

    今天我們一起來完成一個簡單的SpringBoot(Hello World)。就把他作為你的第一個SpringBoot項目。具有一定的參考價值,感興趣的可以了解一下
    2021-09-09
  • Java向上向下轉型詳解

    Java向上向下轉型詳解

    這篇文章主要為大家詳細介紹了Java向上向下轉型,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-09-09
  • SpringBoot鏈路追蹤skyworking的接入方法

    SpringBoot鏈路追蹤skyworking的接入方法

    在SpringBoot項目中引入SkyWalking進行鏈路追蹤,需要下載探針jar包,配置logback.xml,設置啟動變量,以實現(xiàn)服務調用監(jiān)控和錯誤預警,本文給大家介紹SpringBoot鏈路追蹤skyworking的接入方法,感興趣的朋友一起看看吧
    2024-10-10
  • HashMap底層原理全面詳解面試絕對不慌

    HashMap底層原理全面詳解面試絕對不慌

    這篇文章主要介紹了HashMap底層實現(xiàn)原理詳解,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-08-08
  • Java查詢Elasticsearch數據根據指定id檢索(in查詢)、sql權限過濾、多字段匹配檢索及數據排序

    Java查詢Elasticsearch數據根據指定id檢索(in查詢)、sql權限過濾、多字段匹配檢索及數據排序

    在Java開發(fā)中Elasticsearch(簡稱ES)是一個非常流行的搜索引擎,它提供了強大的全文搜索和分析功能,這篇文章主要給大家介紹了關于Java查詢Elasticsearch數據根據指定id檢索(in查詢)、sql權限過濾、多字段匹配檢索及數據排序的相關資料,需要的朋友可以參考下
    2024-05-05
  • 關于Mybatis-Plus?Update更新策略問題

    關于Mybatis-Plus?Update更新策略問題

    這篇文章主要介紹了關于Mybatis-Plus?Update更新策略問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Java多線程CAS操作原理代碼實例解析

    Java多線程CAS操作原理代碼實例解析

    這篇文章主要介紹了Java多線程CAS操作原理代碼實例解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-07-07

最新評論