成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

通用分頁解決方案:簡(jiǎn)化項(xiàng)目開發(fā)中的分頁難題

開發(fā) 項(xiàng)目管理
本文將分享一個(gè)通用分頁解決方案,它能夠?qū)θ我鈹?shù)據(jù)表實(shí)現(xiàn)分頁,使用方法簡(jiǎn)單便捷,有效提升開發(fā)效率。

前言

在實(shí)際項(xiàng)目開發(fā)過程中,分頁功能的使用頻率極高,尤其是針對(duì)不同數(shù)據(jù)表進(jìn)行分頁操作,往往是一件頗為繁瑣的事情。不同的數(shù)據(jù)表結(jié)構(gòu)、業(yè)務(wù)需求以及數(shù)據(jù)量大小,都可能導(dǎo)致分頁實(shí)現(xiàn)方式的差異,這無疑增加了開發(fā)的復(fù)雜性和工作量。

本文將分享一個(gè)通用分頁解決方案,它能夠?qū)θ我鈹?shù)據(jù)表實(shí)現(xiàn)分頁,使用方法簡(jiǎn)單便捷,有效提升開發(fā)效率。

實(shí)現(xiàn)

/**
 * 通用分頁工具類
 *
 * @param <T>
 */
@Data
public class PageUtils<T> implements Serializable {

    /**
     * 當(dāng)前頁碼
     */
    private int currentPage;
    /**
     * 每頁大小
     */
    private int pageSize;
    /**
     * 總數(shù)據(jù)條數(shù)
     */
    private int totalNum;

    /**
     * 首頁
     */
    private int first = 1;

    /**
     * 尾頁
     */
    private int last;
    /**
     * 總頁數(shù)
     */
    private int totalPage;

    /**
     * 上一頁
     */
    private int prev;
    /**
     * 下一頁
     */
    private int next;

    /**
     * 頁面序號(hào)顯示的起始位置
     */
    private int startNum;

    /**
     * 頁碼顯示控制-開始頁碼
     */
    private int start;
    /**
     * 頁碼顯示控制-結(jié)束頁碼
     */
    private int end;
    /**
     * 顯示頁碼控制-總顯示頁碼(防止頁碼過多,頁面顯示擁擠問題)
     */
    private int count = 10;

    /**
     * 數(shù)據(jù)
     */
    private List<T> list = new ArrayList<>();

    /**
     * 在構(gòu)造器中根據(jù)指定的參數(shù),計(jì)算其他所有屬性的屬性值
     *
     * @param currentPage
     * @param pageSize
     * @param totalNum
     */
    public PageUtils(int currentPage, int pageSize, int totalNum) {
        this.currentPage = currentPage;
        //賦值每天顯示的記錄條數(shù)
        this.pageSize = pageSize;
        //賦值總記錄數(shù)(總數(shù)據(jù)條數(shù))
        this.totalNum = totalNum;

        //計(jì)算獲得總頁數(shù)以及尾頁
        this.totalPage = this.last = (int) Math.ceil((double) totalNum / pageSize);
        //防止當(dāng)前頁小于1
        this.currentPage = Math.max(this.currentPage, 1);
        //防止當(dāng)前頁超過總頁數(shù)
        this.currentPage = Math.min(this.totalPage, this.currentPage);

        //設(shè)置上一頁:上一頁不能小于1
        this.prev = Math.max(this.currentPage - 1, 1);
        //設(shè)置下一頁:下一頁不能超過總頁數(shù)
        this.next = Math.min(this.currentPage + 1, this.totalPage);

        //計(jì)算獲取數(shù)據(jù)顯示的序號(hào)位置
        this.startNum = (this.currentPage - 1) * pageSize;
        //計(jì)算顯示頁碼的起始位置:起始位置不能小于1
        this.start = Math.max(this.currentPage - this.count / 2, 1);
        //計(jì)算顯示頁碼的結(jié)束位置:結(jié)束位置不能超過總頁數(shù)
        this.end = Math.min(this.start + this.count, this.totalPage);
    }
}

具體使用:

假設(shè)這是數(shù)據(jù)訪問對(duì)象類,負(fù)責(zé)與數(shù)據(jù)庫交互

public class DemoDAO {
    // 模擬獲取總數(shù)據(jù)條數(shù)的方法,實(shí)際中會(huì)執(zhí)行數(shù)據(jù)庫查詢
    public int totalNum() {
        // 這里簡(jiǎn)單返回一個(gè)固定值模擬數(shù)據(jù),實(shí)際應(yīng)從數(shù)據(jù)庫查詢
        return 100;
    }

    // 模擬根據(jù)頁碼和每頁大小查詢數(shù)據(jù)的方法,實(shí)際中會(huì)執(zhí)行數(shù)據(jù)庫查詢
    public List<Demo> findByPage(int currentPage, int pageSize) {
        List<Demo> resultList = new ArrayList<>();
        // 計(jì)算數(shù)據(jù)起始位置
        int startIndex = (currentPage - 1) * pageSize;
        // 簡(jiǎn)單模擬數(shù)據(jù)生成,實(shí)際應(yīng)從數(shù)據(jù)庫查詢
        for (int i = startIndex; i < startIndex + pageSize && i < 100; i++) {
            resultList.add(new Demo(i, "Demo_" + i));
        }
        return resultList;
    }
}

業(yè)務(wù)服務(wù)類,調(diào)用DAO類并使用分頁工具類進(jìn)行分頁處理

public class DemoService {

    public PageUtils query(int currentPage, int pageSize) {
        DemoDAO dao = new DemoDAO();
        //查總數(shù)據(jù)條數(shù)
        int totalNum = dao.totalNum();
        //根據(jù)提供的參數(shù)構(gòu)建一個(gè)PageUtils對(duì)象
        PageUtils<Demo> pu = new PageUtils<>(currentPage, pageSize, totalNum);
        //查當(dāng)前頁數(shù)據(jù)
        List<Demo> list = dao.findByPage(pu.getCurrentPage(), pu.getPageSize());
        //將查詢到的指定頁碼的數(shù)據(jù)存儲(chǔ)到分頁工具對(duì)象中
        pu.setList(list);
        //將分頁工具對(duì)象返回
        return pu;
    }
}

測(cè)試: 1-10

圖片圖片

3-10

圖片圖片

責(zé)任編輯:武曉燕 來源: 一安未來
相關(guān)推薦

2021-10-04 09:14:18

ElasticSear深度分頁

2016-10-25 14:18:59

分頁javascriptminiui

2017-02-28 14:28:37

數(shù)據(jù)跨庫分頁架構(gòu)

2009-07-15 17:00:49

JDBC查詢

2025-03-07 09:01:14

商品模塊接口項(xiàng)目

2019-05-14 14:27:21

跨庫分頁分庫數(shù)據(jù)

2011-03-21 10:35:10

2024-09-26 14:27:14

2011-08-11 18:54:01

數(shù)據(jù)庫分頁查詢

2010-06-10 12:37:27

MySQL分頁查詢

2015-09-07 09:52:08

云部署云產(chǎn)品云解決方案

2009-12-23 09:04:41

LINQ通用分頁

2014-12-25 13:18:39

2013-11-05 10:22:20

瀏覽器加密

2013-03-31 14:10:55

敏捷開發(fā)

2010-06-11 14:41:20

MySQL分頁查詢

2009-09-15 09:50:47

虛擬化解決方案

2011-03-24 13:31:35

2分法存儲(chǔ)過程分頁

2009-09-03 21:36:36

CDN解決方案網(wǎng)絡(luò)管理
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 超碰欧美 | 玖玖在线精品 | 久久av一区 | 一区二区精品 | 草比av| 欧美色综合天天久久综合精品 | 亚洲一区二区免费视频 | 午夜a v电影 | 男女羞羞视频在线免费观看 | 欧美日韩亚洲视频 | 欧美中文在线 | 久久国产精品久久久久久 | 精品免费国产一区二区三区四区介绍 | 欧美精品91爱爱 | 国产精品日日夜夜 | 特级一级黄色片 | 亚洲视频国产视频 | 精品一区二区三区在线观看 | 一区二区中文字幕 | 欧美日韩国产不卡 | 久久亚洲精品国产精品紫薇 | 日韩成人国产 | 欧美理论片在线观看 | 综合国产| 欧美亚洲视频在线观看 | 在线黄色网 | 亚洲a毛片 | 99久久国产精 | 日韩一区二区三区在线看 | 国产91视频一区二区 | 国产精品免费视频一区 | 国产三级| 久久天天躁狠狠躁夜夜躁2014 | 日韩在线中文 | 成人在线精品视频 | 日韩欧美在线观看视频 | 成人精品久久 | 夜夜操操操 | 久久精品视频播放 | 欧洲色 | 九九热在线免费视频 |