分頁(將數據庫中的信息分頁顯示到網頁)
阿新 • • 發佈:2017-08-16
gen ets arr get ges nec 記錄 方法 logs
問題分析:
當我們想檢索數據庫中的信息並將其顯示到網頁上時,如果數據庫中的信息過多時 。一方面會使數據庫開銷非常大,降低性能;另一方面在一張頁面上顯示過多數據也會降低用戶體驗。
解決辦法:
1.由於在分頁之後每一頁顯示的信息不再僅僅是數據空中的數據而是類似於下圖:
所以我們需要創建一個page類:
package com.neuedu.manage.bean; import java.util.List; public class page <T>{ private List<T> data;//數據庫查詢出的數據private int totalRecord;//總記錄數,數據庫查詢 private int pageNumber;//當前頁碼 private int pageSize;//每頁的記錄數 private String path;//jsp頁面鏈接所要跳轉的地址 // private int index; //當前索引,計算得到 // private int totalPage;//總頁數 計算得到
}
其中我們為前5個變量創建GET和SET方法;由於後兩個變量是計算得到的,只為他們創建GET方法:
public int getIndex() { /** * 當前索引值,計算得到的 */ return (getPageNumber()-1)*pageSize; } public int getTotalPage() { /** * 總頁數 */ if(totalRecord%pageSize==0){ return totalRecord/pageSize; }return (totalRecord/pageSize +1); }
2.dao層代碼:根據當前索引值和每頁的記錄數將結果查詢出來,然後將其封裝成user對象並保存到Student類的LIst鏈表中,將其返回。
public List<Student> getLimitStuList(int index, int pageSize) { JDBCUtil jdbcUtil=new JDBCUtil(); Connection con = jdbcUtil.getConnection(); PreparedStatement pst=null; ResultSet rSet=null; List<Student>list= new ArrayList<Student>(); String sql="SELECT * FROM students limit ?,?"; try { pst = con.prepareStatement(sql); pst.setInt(1, index); pst.setInt(2, pageSize); rSet = pst.executeQuery(); while(rSet.next()) { int id=rSet.getInt("id"); String name=rSet.getString("name"); String school=rSet.getString("school"); double score=rSet.getDouble("score"); list.add(new Student(id, name, school, score)); } } catch (SQLException e) { e.printStackTrace(); } finally{ JDBCUtil.close(con, pst, rSet); } System.out.println(list); return list; }
未完待續。。。。
分頁(將數據庫中的信息分頁顯示到網頁)