Java分頁代碼的實現

jopen 13年前發布 | 309K 次閱讀 Java Java開發

在項目中,分頁是一個項目中必不可少的,它可以防止我們從數據庫中進行大量數據查詢時速度變慢,提高我們的查詢效率

1、定義分頁模型:PageModel

    package com.common.page;

import java.util.List;  

/** 
 * 封裝分頁信息 
 * @author Administrator 
 * 
 */  
public class PageModel<E> {  

    //結果集  
    private List<E> list;  

    //查詢記錄數  
    private int totalRecords;  

    //每頁多少條數據  
    private int pageSize;  

    //第幾頁  
    private int pageNo;  

    /** 
     * 總頁數 
     * @return 
     */  
    public int getTotalPages() {  
        return (totalRecords + pageSize - 1) / pageSize;  
    }  

    /** 
     * 取得首頁 
     * @return 
     */  
    public int getTopPageNo() {  
        return 1;  
    }  

    /** 
     * 上一頁 
     * @return 
     */  
    public int getPreviousPageNo() {  
        if (pageNo <= 1) {  
            return 1;  
        }  
        return pageNo - 1;  
    }  

    /** 
     * 下一頁 
     * @return 
     */  
    public int getNextPageNo() {  
        if (pageNo >= getBottomPageNo()) {  
            return getBottomPageNo();  
        }  
        return pageNo + 1;    
    }  

    /** 
     * 取得尾頁 
     * @return 
     */  
    public int getBottomPageNo() {  
        return getTotalPages();  
    }  

    public List<E> getList() {  
        return list;  
    }  

    public void setList(List<E> list) {  
        this.list = list;  
    }  

    public int getTotalRecords() {  
        return totalRecords;  
    }  

    public void setTotalRecords(int totalRecords) {  
        this.totalRecords = totalRecords;  
    }  

    public int getPageSize() {  
        return pageSize;  
    }  

    public void setPageSize(int pageSize) {  
        this.pageSize = pageSize;  
    }  

    public int getPageNo() {  
        return pageNo;  
    }  

    public void setPageNo(int pageNo) {  
        this.pageNo = pageNo;  
    }  
}  </pre>2、分頁測試:在MySQL中建立admin表,里面有字段id、name、password<p></p>

3、簡歷Admin的實體bean類:

    package com.common.page;

public class Admin {  
    private int id;  
    private String name;  
    private String password;  
    public int getId() {  
        return id;  
    }  
    public void setId(int id) {  
        this.id = id;  
    }  
    public String getName() {  
        return name;  
    }  
    public void setName(String name) {  
        this.name = name;  
    }  
    public String getPassword() {  
        return password;  
    }  
    public void setPassword(String password) {  
        this.password = password;  
    }  

}  </pre> <p></p>

4、測試調用:
    package com.common.page;

import java.sql.Connection;  
import java.sql.PreparedStatement;  
import java.sql.ResultSet;  
import java.sql.SQLException;  
import java.util.ArrayList;  
import java.util.List;  

import com.common.db.DbUtil;  

public class Client {  
    public static PageModel findAdmins(int pageNo,int pageSize){  
        Connection conn=DbUtil.getConnection();  
        String sql="select * from admin limit ?,?";  
        PageModel pageModel=null;  
        PreparedStatement pstm=null;  
        ResultSet rs=null;  
        Admin admin=null;  
        List<Admin> list=new ArrayList<Admin>();  
        try {  
            pstm=conn.prepareStatement(sql);  
            pstm.setInt(1, (pageNo-1)*pageSize);  
            pstm.setInt(2, pageNo*pageSize);  
            rs=pstm.executeQuery();;  
            while(rs.next()){  
                admin=new Admin();  
                admin.setId(rs.getInt("a_id"));  
                admin.setName(rs.getString("a_name"));  
                admin.setPassword(rs.getString("a_pwd"));  
                list.add(admin);  
            }  
            ResultSet rs2=pstm.executeQuery("select count(*) from admin");  
            int total=0;  
            if(rs2.next()){  
                total=rs2.getInt(1);  
            }  
            pageModel=new PageModel();  
            pageModel.setPageNo(pageNo);  
            pageModel.setPageSize(pageSize);  
            pageModel.setTotalRecords(total);  
            pageModel.setList(list);  
        } catch (SQLException e) {  
            e.printStackTrace();  
        }finally{  
            DbUtil.close(conn);  
            DbUtil.close(pstm);  
            DbUtil.close(rs);  
        }  
        return pageModel;  
    }  

    public static void main(String[] args) {  
        PageModel pageModel=Client.findAdmins(2,4);  
        List<Admin> list=pageModel.getList();  
        for(Admin a:list){  
            System.out.print("ID:"+a.getId()+",用戶名:"+a.getName()+",密碼:"+a.getPassword());  
            System.out.println();  
        }  
        System.out.print("當前頁:"+pageModel.getPageNo()+" ");  
        System.out.print("共"+pageModel.getTotalPages()+"頁  ");  
        System.out.print("首頁:"+pageModel.getTopPageNo()+" ");  
        System.out.print("上一頁:"+pageModel.getPreviousPageNo()+" ");  
        System.out.print("下一頁:"+pageModel.getNextPageNo()+" ");  
        System.out.print("尾頁:"+pageModel.getBottomPageNo()+" ");  
        System.out.print("共"+pageModel.getTotalRecords()+"條記錄");  
        System.out.println();  
    }  

}  </pre>這樣分頁效果就實現了,我們要實現分頁效果,只要傳入相應的參數和相應的數據庫執行語句即可實現,希望大家能靈活運用。<br />


轉自:http://blog.csdn.net/harderxin/article/details/7731313

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!