SqlServer,分頁查詢(最簡單,新手必備!)


SqlServer,分頁查詢(最簡單,新手必備!) sqlserver數據庫在處理分頁數據時,不如mysql可以用limit來限制每次查找的行數,智能用top來進行查找,這對於新手程序員來說,可能不是很容易來寫出來。本文分享一個最簡單,最方便的查詢方法(大神勿噴!),廢話不多說,直接進入正題!

 

1 對應表的實體類(方便測試,只設置了一個字段)

 1 package testDemo;
 2 /**
 3  * 實體類
 4  * 
 5  * @author Dell
 6  * 
 7  */
 8 public class Student {
 9     private Integer id;
10 
11     public Integer getId() {
12         return id;
13     }
14 
15     public void setId(Integer id) {
16         this.id = id;
17     }
18 }

 

2:分頁的工具類(查詢時只需查詢出表中所有數據存入List集合中,不確定集合類型,工具類定義為Objec,轉換方法在文章末,getInfoList()方法返回給界面需要展示的數據)

import java.util.ArrayList;
import java.util.List;

public class PageUtil {

    private Integer currentPage;//當前頁數
    private Integer pageSize;//頁面大小
    private Integer totalCount;//總數據量
    private Integer totalPageCount;//總的頁數
    private List<Object> infoList;//接受的需要分頁的數據

    public Integer getCurrentPage() {
        return currentPage;
    }

    public void setCurrentPage(Integer currentPage) {
        this.currentPage = currentPage;
    }

    public Integer getPageSize() {
        return pageSize;
    }

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

    public Integer getTotalCount() {
        return totalCount;
    }

    /**
     * 計算得到總頁數
     *
     * @param totalCount
     */
    public void setTotalCount(Integer totalCount) {
        if (totalCount > 0) {
            this.totalCount = totalCount;
            totalPageCount = this.totalCount % pageSize == 0 ? (this.totalCount / pageSize)
                    : (this.totalCount / pageSize + 1);
        }
    }

    public Integer getTotalPageCount() {
        return totalPageCount;
    }

    public void setTotalPageCount(Integer totalPageCount) {
        this.totalPageCount = totalPageCount;
    }

    public List<Object> getInfoList() {
        //臨時數組,存儲已經分頁的數據集合
        List<Object> tempList = new ArrayList<Object>();
        //需要展示的第一條數據的索引
        int startIndex = pageSize * (currentPage - 1);
        //結束的數據索引
        int endIndex = (startIndex) + pageSize;

        for (int i = startIndex; i < endIndex; i++) {
            if (i < infoList.size()) {
                tempList.add(infoList.get(i));
            }
        }
        return tempList;
    }

    public void setInfoList(List<Object> infoList) {
        this.infoList = infoList;
    }
}

 

3:測試

 1 public static void main(String[] args) {
 2         
 3         // 模擬從數據中查詢處的數據,20條
 4         List<Student> stuList = new ArrayList<Student>();
 5         for (int i = 0; i < 20; i++) {
 6             Student stu = new Student();
 7             stu.setId(i);
 8             stuList.add(stu);
 9         }
10         
11         PageUtil pageUtil = new PageUtil();
12         pageUtil.setPageSize(5);// 頁面大小
13         pageUtil.setCurrentPage(2);// 當前頁數
14         pageUtil.setTotalCount(stuList.size());
15         // 傳給工具類所有數據
16         pageUtil.setInfoList(Arrays.asList(stuList.toArray()));
17         
18         // 臨時集合,存儲需要工具類返回的分頁的數據集合
19         List<Student> showList = new ArrayList<Student>();
20         showList = (List<Student>) (Object) pageUtil.getInfoList();
21         // 模擬界面展示數據
22         for (int i = 0; i < showList.size(); i++) {
23             System.out.println(showList.get(i).getId());
24         }
25     }

 

tips:
1 List(Object)集合轉換為實體類集合

List<Student> showList = (List<Student>) (Object) Object集合 ;

2 List<實體類>集合轉換為List集合

List<Object> objectList = Arrays.asList(stuList.toArray());

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM