對(duì)查詢出來(lái)的數(shù)據(jù)數(shù)據(jù)進(jìn)行分頁(yè)

采用DAO層設(shè)計(jì)模式
詳解
1.dao包:1.通用Dao類(實(shí)現(xiàn)增刪改查)2.EmpDao(實(shí)現(xiàn)Emp的一些操作)3.EmpDaoImpl(具體操作Emp操作的類)
2.pojo具體類包1.Emp類
3.工具類包 1.JDBCTools 2.Page
4.測(cè)試類包

思想:用面向?qū)ο蟮乃季S進(jìn)行思考,進(jìn)行分頁(yè)就要建立一個(gè)頁(yè)碼類

1.頁(yè)碼類應(yīng)該有當(dāng)前頁(yè)碼的屬性
2.上一頁(yè)下一頁(yè)也就是對(duì)當(dāng)前頁(yè)碼的操作,因此建立兩個(gè)對(duì)當(dāng)前頁(yè)碼操作的方法
3.而首頁(yè)可以讓當(dāng)前頁(yè)等于1,尾頁(yè)需要等于總頁(yè)數(shù)
4.因此我們需要一個(gè)總頁(yè)數(shù)屬性
5.總頁(yè)數(shù)就等于數(shù)據(jù)庫(kù)數(shù)據(jù)的條數(shù)%每一頁(yè)的數(shù)據(jù)
6.這樣每一頁(yè)就可以對(duì)應(yīng)一定數(shù)量數(shù)量的數(shù)據(jù),這是我們要建立一個(gè)集合裝每一頁(yè)的數(shù)據(jù)。
7.如何通過(guò)頁(yè)碼對(duì)應(yīng)數(shù)據(jù)庫(kù)的數(shù)據(jù)呢?,這樣我們就可以用到limit這個(gè)方法了

public class Page <T>{
    private int pageNo;  //當(dāng)前頁(yè)
    private int pageSize;  //每一頁(yè)的數(shù)據(jù)個(gè)數(shù)
    private int totalNum;   //總數(shù)據(jù)
    private List<T> list=new ArrayList<>();  //裝數(shù)據(jù)的集合
//這里可以通過(guò)get或者set方法控制當(dāng)前頁(yè)是合法
    public int getPageNo() {  
        if(pageNo<1){ //當(dāng)前頁(yè)小于1,返回1
            return 1;
        }
        if(pageNo>getTotalPageNum()){  //大于總頁(yè)數(shù),返回總后一頁(yè)
            return getTotalPageNum();
        }   
        return pageNo;
    }
    public void setPageNo(int pageNo) {
        this.pageNo = pageNo;
    }
    public int getPageSize() {
        return pageSize;
    }
    public void setPageSize(int pageSize) {
        this.pageSize = pageSize;
    }
    public int getTotalNum() {
        return totalNum;
    }
    public void setTotalNum(int totalNum) {
        this.totalNum = totalNum;
    }
    
    public int getTotalPageNum(){  //得到總頁(yè)數(shù)
        
        if(totalNum%pageSize==0){  //總數(shù)據(jù)除以每頁(yè)的數(shù)據(jù)條數(shù)
            return totalNum%pageSize;
        }else{
            return totalNum%pageSize+1;
        }
    }
    
    //獲取上一頁(yè)  
    
    public int getPrePage()
    {
        if(getPageNo() > 1)
            return getPageNo() - 1;
        return getPageNo();
    }
    
    
    //獲取下一頁(yè)  
    
    public int getNextPage()
    {
        if(getPageNo() < getTotalPageNum())
            return getPageNo() + 1;
        return getPageNo();
    }
    public Page(int pageNo, int pageSize, int totalNum, List<T> list) {
        super();
        this.pageNo = pageNo;
        this.pageSize = pageSize;
        this.totalNum = totalNum;
        this.list = list;
    }
    public List<T> getList() {
        return list;
    }
    public void setList(List<T> list) {
        this.list = list;
    }
}

具體實(shí)現(xiàn)類里包括分頁(yè)操作

public class EmpDAOImpl extends DAO<Emp> implements EmpDAO{ 

    @Override
    public int getCount() throws Exception {    //用于獲取分頁(yè)的總數(shù)據(jù)是多少
        Connection conn = JDBCTools.getConnection();
        String sql = "SELECT count(*) from emp";
        Long in =  queryForColumn(conn, sql);
        int ins=Integer.parseInt(""+in);
        return ins;
    }

    @Override
    public Page<Emp> findAll(int pageNo) throws Exception {  //獲取當(dāng)前頁(yè)碼的數(shù)據(jù)
        Connection conn=JDBCTools.getConnection();
        int begin=(pageNo-1)*3;            
        String sql="select * from emp Limit ?,3";
        List<Emp> list=queryForList(conn, sql,begin);
        Page page=new Page<>(pageNo, 3, (int)getCount(), list);
        return page;
    }
}

測(cè)試類中上一頁(yè),下一頁(yè)調(diào)用page里的方法獲取當(dāng)前頁(yè)數(shù)就可以,首頁(yè),尾頁(yè),只需要把當(dāng)前頁(yè)數(shù)設(shè)置為1和最后一頁(yè)就可以了

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 本文包括:1、分頁(yè)技術(shù)概述2、實(shí)現(xiàn)分頁(yè)3、完善分業(yè)——分頁(yè)工具條4、幾種常見的分頁(yè)工具條 1、分頁(yè)技術(shù)概述 物理分...
    廖少少閱讀 4,554評(píng)論 0 38
  • (以下使用ssm+jsp實(shí)現(xiàn)顯示所有電影為例子) 1.封裝一個(gè)PageBean類 package com.enti...
    何文杰啊閱讀 3,943評(píng)論 0 0
  • 這部分主要是開源Java EE框架方面的內(nèi)容,包括Hibernate、MyBatis、Spring、Spring ...
    雜貨鋪老板閱讀 1,554評(píng)論 0 2
  • 一、文本框?yàn)樽址?必填項(xiàng)非空校驗(yàn): 1、必填項(xiàng)未輸入--程序應(yīng)提示錯(cuò)誤; 2、必填項(xiàng)只輸入若干個(gè)空格,未輸入其它...
    許小小晴閱讀 4,813評(píng)論 0 2
  • 不知從什么時(shí)候開始,許多人也許感覺攻擊魯迅的“尖刻、好斗,沒有包容胸懷” 無(wú)論在實(shí)踐還是理論上已沒有多大的攻擊...
    林梅英閱讀 595評(píng)論 1 4

友情鏈接更多精彩內(nèi)容