最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

前言

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

第一種

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

進(jìn)入實現(xiàn)層,使用PageHelper,并調(diào)用pageQuery方法即可完成分頁,以下為Pagehelper的具體代碼 。(但需注意,此方法只適用于從數(shù)據(jù)庫中直接查出的數(shù)據(jù),如果將查出的數(shù)據(jù)進(jìn)行二次封裝則會導(dǎo)致分頁失?。?/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 {
    /**
     * 要求 請求參數(shù): ?pageNum=xxx&pageSize=xxx
     *
     * @param supplier 查詢方法
     * @param <T>      類型對象
     * @return 結(jié)果集
     */
    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 每頁數(shù)據(jù)大小
     * @param <T>      類型
     * @return 結(jié)果集
     */
    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 結(jié)果集
     */
    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 每頁數(shù)據(jù)大小
     * @param <T>      類型
     * @return 結(jié)果集
     */
    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();
    }
}

第二種

這種方法是我第一次使用,把入?yún)⒌膒age和size封裝成了對象PageDomain

PageDomain代碼如下

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

 這是控制層代碼

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

下面是PageUtils的代碼

總結(jié)

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

相關(guān)文章

  • Java和JVM的重載識別,重寫方法是怎樣進(jìn)行的

    Java和JVM的重載識別,重寫方法是怎樣進(jìn)行的

    這篇文章主要介紹了Java和JVM的重載識別,重寫方法是怎樣進(jìn)行的,違章圍繞了Java和JVM的重載識別,重寫方法展開相關(guān)資料,需要的小伙伴可以參考一下,希望對你的工作或?qū)W習(xí)有所幫助
    2022-01-01
  • SpringBoot中Dozer的使用小結(jié)

    SpringBoot中Dozer的使用小結(jié)

    dozer是用來兩個對象之間屬性轉(zhuǎn)換的工具,有了這個工具之后,我們將一個對象的所有屬性值轉(zhuǎn)給另一個對象時,就不需要再去寫重復(fù)的set和get方法了,下面介紹下SpringBoot中Dozer的使用,感興趣的朋友一起看看吧
    2022-03-03
  • JavaWeb連接數(shù)據(jù)庫MySQL的操作技巧

    JavaWeb連接數(shù)據(jù)庫MySQL的操作技巧

    數(shù)據(jù)庫是編程中重要的一部分,它囊括了數(shù)據(jù)操作,數(shù)據(jù)持久化等各方面。在每一門編程語言中都占有相當(dāng)大的比例。本次,小編以MySQL為例,使用mvc編程思想,給大家講解下javaweb對數(shù)據(jù)庫的操作
    2017-02-02
  • Java在長字符串中查找短字符串的實現(xiàn)多種方法

    Java在長字符串中查找短字符串的實現(xiàn)多種方法

    這篇文章主要介紹了Java在長字符串中查找短字符串的實現(xiàn)多種方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • SpringBoot2.x入門教程之引入jdbc模塊與JdbcTemplate簡單使用方法

    SpringBoot2.x入門教程之引入jdbc模塊與JdbcTemplate簡單使用方法

    這篇文章主要介紹了SpringBoot2.x入門教程之引入jdbc模塊與JdbcTemplate簡單使用方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-07-07
  • Java圖形界面框架AWT布局管理器詳解

    Java圖形界面框架AWT布局管理器詳解

    這篇文章主要介紹了Java圖形界面框架AWT布局管理器,AWT是最早的圖形用戶界面框架之一,它為開發(fā)人員提供了一些基本的組件和工具,用于構(gòu)建窗口、按鈕、文本框、標(biāo)簽等圖形界面元素,需要的朋友可以參考下
    2025-04-04
  • idea版本控制忽略.idea文件和.iml文件的問題

    idea版本控制忽略.idea文件和.iml文件的問題

    這篇文章主要介紹了idea版本控制忽略.idea文件和.iml文件,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11
  • Java和Python現(xiàn)在都挺火,我應(yīng)該怎么選?

    Java和Python現(xiàn)在都挺火,我應(yīng)該怎么選?

    這篇文章主要介紹了Java和Python現(xiàn)在都挺火,我應(yīng)該怎么選?本文通過全面分析給大家做個參考,需要的朋友可以參考下
    2020-07-07
  • 細(xì)數(shù)java中Long與Integer比較容易犯的錯誤總結(jié)

    細(xì)數(shù)java中Long與Integer比較容易犯的錯誤總結(jié)

    下面小編就為大家?guī)硪黄?xì)數(shù)java中Long與Integer比較容易犯的錯誤總結(jié)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01
  • 基于java涉及父子類的異常詳解

    基于java涉及父子類的異常詳解

    下面小編就為大家?guī)硪黄趈ava涉及父子類的異常詳解。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-09-09

最新評論

田阳县| 建德市| 天门市| 马山县| 武鸣县| 锦屏县| 浦城县| 门头沟区| 河池市| 黄平县| 类乌齐县| 宁陵县| 丹棱县| 汾西县| 东至县| 西充县| 公安县| 漯河市| 永州市| 齐河县| 依兰县| 福清市| 奈曼旗| 怀安县| 泸水县| 望谟县| 维西| 新源县| 哈尔滨市| 南靖县| 定襄县| 台江县| 文成县| 霍邱县| 新绛县| 嵩明县| 佛坪县| 广元市| 交口县| 沾化县| 江孜县|