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());