分頁查詢功能


分頁:select * from 表名 limit ?,?;(第一個?是查詢的其實位置《(當前頁數-1)*每頁顯示的數據量》,第二個?是查詢的數據條數)


傳遞兩個參數 : 當前頁數(pageCode  由頁面傳遞過來) 、每頁顯示的數據條數(pageSize 有自己設定)
另一個必要數據量:  總數據量(totalRecord 利用數據庫查詢語句查詢)


再根據當前頁數算出上一頁,下一頁等參數
利用總數據量來得出總頁數:總數據量/每頁的數據量


利用封裝javabean的方法將頁數和查詢出來的結果集封裝到一起,便於在展示頁面調用 ${實體類名.屬性名}


實體類層、dao層、service層、servlet層依次進行開發

實體層:
構建pageCode(當前頁碼),pageSize(每頁數據條數),totalPage(總頁數),totalRecord(總數據條數),userList(數據結果集)的實體類

public class PageBean {
private int pageCode;//當前頁碼
private int pageSize;//每頁數據條數
private int totalPage;//總頁數
private int totalRecord;//總數據條數

private List<Map<String,Object>> userList;//用來存儲查詢出來的結果集

public int getPageCode() {
return pageCode;
}

public void setPageCode(int pageCode) {
this.pageCode = pageCode;
}

public int getPageSize() {
return pageSize;
}

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

public int getTotalPage() {
return totalPage;
}

public void setTotalPage(int totalPage) {
this.totalPage = totalPage;
}

public int getTotalRecord() {
return totalRecord;
}

public void setTotalRecord(int totalRecord) {
this.totalRecord = totalRecord;
}

public List<Map<String, Object>> getUserList() {
return userList;
}

public void setUserList(List<Map<String, Object>> userList) {
this.userList = userList;
}
}

 dao層:

寫一個分頁查詢方法的接口:

public interface IUserDao {
public PageBean findByPage(int pageCode, int pageSize);
}

然后對這個接口進行實現:

public class UserDaoImpl implements IUserDao {
//pageCode是當前頁碼數
//pageSize是頁面顯示的條數
@Override
public PageBean findByPage(int pageCode, int pageSize) {
PageBean pg=new PageBean();
String sql="select * from user limit ?,?";
//根據pageCode和pageSize計算出limit的參數
//第一個?是查詢的起始位,用當前頁碼減一再乘每頁的顯示的條數
int firstRow=(pageCode-1)*pageSize;
//第二個?是每次查詢的數據條數
int secondRow=pageSize;
//調用DButils中的查詢方法,查詢出來結果集
System.out.println(firstRow+" "+secondRow);
List<Map<String, Object>> maps = DButils.executeQuery(sql,firstRow,secondRow);
System.out.println("分頁查詢數據...............");
System.out.println(maps);
//將結果集合添加到PageBean中
pg.setUserList(maps);


//查詢一下表中總數據量
String sql2="select count(*) as num from user";
List<Map<String, Object>> maps1 = DButils.executeQuery(sql2);
System.out.println("總數據量 "+maps1);
int totalRecord=0;
if(maps1!=null&&maps1.size()>0){
// int totalPage =(int) maps1.get(0).get("num"); java中默認從map中查找出來的數據是lang型,無法向下轉為int
totalRecord = Integer.parseInt(maps1.get(0).get("num") + "");
System.out.println("總數據量"+totalRecord);
}
//計算出總頁數
int totalPage=totalRecord%secondRow==0?totalRecord/secondRow:totalRecord/secondRow+1;
System.out.println("總頁數"+totalPage);
pg.setPageCode(pageCode);
pg.setTotalPage(totalPage);
pg.setPageSize(pageSize);
return pg;
}
}

service層:

寫分頁查詢的接口和實現類:

接口:

import com.aaa.entity.PageBean;

public interface IUserService {
public PageBean findByPage(int pageCode, int pageSize);
}

實現類:

import com.aaa.dao.IUserDao;
import com.aaa.dao.UserDaoImpl;
import com.aaa.entity.PageBean;
import com.aaa.service.IUserService;

public class UserServiceImpl implements IUserService {
private IUserDao userDao=new UserDaoImpl();
@Override
public PageBean findByPage(int pageCode, int pageSize) {
return userDao.findByPage(pageCode,pageSize);
}
}

servlet層:

@WebServlet("/PS")
public class PageServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("進入分頁servlet");
String pageC = req.getParameter("pageCode");
int pageCode=1;//第一次登錄系統默認第一頁
if(pageC!=null&&pageC.trim().length()>0){
pageCode=Integer.parseInt(pageC);
}
//賦值給pageSize,每頁顯示的數據數量
int pageSize=3;
IUserService userService = new UserServiceImpl();
PageBean byPage = userService.findByPage(pageCode, pageSize);
System.out.println(byPage);
req.setAttribute("users",byPage);
req.getRequestDispatcher("index.jsp").forward(req,resp);
}
}

前端頁面顯示:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>$Title$</title>
</head>
<body>
<p>用戶信息展示</p>
<table border="1px">
<tr>
<td>序號</td>
<td>用戶名</td>
<td>電話</td>
<td>昵稱</td>
</tr>
<c:forEach items="${users.userList}" var="user" varStatus="i">
<tr>
<td>${i.index+1}</td>
<td>${user.username}</td>
<td>${user.telephone}</td>
<td>${user.nickname}</td>
</tr>
</c:forEach>
</table>
${users.pageCode}頁/共${users.totalPage}頁
<a href="<c:url value="/PS?pageCode=1"/>">首頁</a>
<c:if test="${users.pageCode>1}">
<a href="<c:url value="/PS?pageCode=${users.pageCode-1}"/>">上一頁</a>
</c:if>
<c:if test="${users.pageCode<users.totalPage}">
<a href="<c:url value="/PS?pageCode=${users.pageCode+1}"/>">下一頁</a>
</c:if>
<a href="<c:url value="/PS?pageCode=${users.totalPage}"/>">尾頁</a>
</body>
</html>


免責聲明!

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



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