如何實現分頁顯示
使用 JSP+TOMCAT+SQLSERVER
完成效果爲,分頁
- 建立頁面信息對象
包括結果集,記錄數,每頁多少條數據,第幾頁,總頁數,首頁,前一頁,下一頁,尾頁
package com.houlu.drp;
import java.util.List;
/**
* 分頁信息類
* @author Administrator
* @param <T>
*
*/
public class PageModel<T> {
//結果集
private List<T> list;
//記錄數
private int totalRecords;
//每頁多少條數據
private int pageSize;
//第幾頁
private int pageNo;
//總頁數
private int totalPages;
//首頁
private int topPageNo = 1;
//前一頁
private int previousPageNo;
//下一頁
private int nextPageNo;
//尾頁
private int buttomPageNo;
public List<T> getList() {
return list;
}
public void setList(List<T> 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;
}
/**
* 取得總頁數
* @return
*/
public int getTotalPages() {
return (totalRecords + pageSize - 1) / pageSize;
}
/**
* 首頁
* @return
*/
public int getTopPageNo() {
return topPageNo;
}
/**
* 前一頁
* @return
*/
public int getPreviousPageNo() {
if (this.pageNo <= 1) {
return 1;
}
return this.pageNo - 1;
}
/**
* 後一頁
* @return
*/
public int getNextPageNo() {
if(this.pageNo >= totalPages){
return topPageNo;
}
return this.pageNo + 1;
}
/**
* 尾頁
* @return
*/
public int getButtomPageNo() {
return getTotalPages();
}
}
2.使用JAVA查找數據庫表,計算頁信息,利用rowNumber()以及子查詢的方法實現分頁查詢
use DRPManagement
select * from(
select row_number() over(order by user_id asc) as r2,* from
(
select row_number() over(order by user_id asc) as r1,* from T_USER where USER_ID not in('root')
)t1 where t1.r1<=3
)t2 where t2.r2>0
/**
* 分頁查詢
* @param pageNo 第幾頁
* @param pageSize 每頁多少條數據
* @return pageMode
*/
public PageModel findUserList(int pageNo,int pageSize){
//拼串創建SQL
StringBuffer sb = new StringBuffer();
sb.append("select * from(");
sb.append("select row_number() over(order by user_id asc) as r2,* from ");
sb.append("(");
sb.append("select row_number() over(order by user_id asc) as r1,* from T_USER where USER_ID not in('root')");
sb.append(")t1 where t1.r1<= ?");
sb.append(")t2 where t2.r2> ?");
String sql = new String(sb);
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
PageModel pageModel = null;
try {
conn = DbUtil.getConnection();
pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, pageNo*pageSize);
pstmt.setInt(2,(pageNo-1)*pageSize);
rs = pstmt.executeQuery();
List<User> userList = new ArrayList<User>();
while(rs.next()){
User user = new User();
user.setUserId(rs.getString("user_id"));
user.setUserName(rs.getString("user_name"));
user.setPassword(rs.getString("password"));
user.setContactTel(rs.getString("contact_tel"));
user.setEmail(rs.getString("email"));
user.setCreateDate(rs.getTimestamp("create_date"));
userList.add(user);
}
pageModel = new PageModel();
pageModel.setList(userList);
pageModel.setTotalRecords(getTotalRecords(conn));
pageModel.setPageSize(pageSize);
pageModel.setPageNo(pageNo);
} catch (Exception e) {
e.printStackTrace();
}finally{
DbUtil.close(rs);
DbUtil.close(pstmt);
DbUtil.close(conn);
}
return pageModel;
}
/**
* 獲取總記錄數
* @param conn
* @return
* @throws SQLException
*/
private int getTotalRecords(Connection conn)throws SQLException{
String sql = "select count(*) from t_user where user_id not in('root')";
PreparedStatement pstmt = null;
ResultSet rs = null;
int count=0;
try {
pstmt = conn.prepareStatement(sql);
rs = pstmt.executeQuery();
rs.next();
count=rs.getInt(1);
} finally{
DbUtil.close(rs);
DbUtil.close(pstmt);
}
return count;
}
此時pageMode對象保存有多個user對象,即每一頁查詢結果
3.使用JSP輸出
設置頁面大小以及第幾頁
<%
int pageNo = 1;
int pageSize = 2;
PageModel pageMode = UserManager.getInstance().findUserList(pageNo, pageSize);
%>
遍歷pagemode中的user對象,輸出至頁面
<%
List userList = pageMode.getList();
for(Iterator it = userList.iterator();it.hasNext();){
User user = (User)it.next();
%>
<tr>
<td class="rd8">
<input type="checkbox" name="selectFlag" class="checkbox1"
value="<%=user.getUserId()%>">
</td>
<td class="rd8">
<%=user.getUserId()%>
</td>
<td class="rd8">
<%=user.getUserName()%>
</td>
<td class="rd8">
<%=user.getContactTel()%>
</td>
<td class="rd8">
<%=user.getEmail()%>
</td>
<td class="rd8">
<%=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(user.getCreateDate())%>
</td>
</tr>
<%
}
%>