分頁

基於mysql的分頁查詢

1關鍵字----limit m,n   m起始位置(從0開始) n條數javascript

2m和當前頁currentPagepageSize的公式css

M=(currentPage-1)*pageSizehtml

N=pageSizejava

分頁開發步驟mysql

一、分頁輔助類web

package crm.zy.utils;
import java.util.List;
public class LimitUtil {//分頁輔助類
    //屬性
    //頁面尺寸----->本身規定的
    private Integer pageSize=3;
    //總條數------->從數據庫查詢的(SELECT COUNT(*) from t_customer)
    private Integer totalCount;
    //總頁數------>總頁數int c=(a%b==0?(a/b):(a/b)+1);
    private Integer pageCount;
    //當前頁 ------->頁面傳入的參數
    private Integer currentPage;
    //查詢出來的數據集合  ?不肯定:加強                                                  
    private List<?> data;
    
    
    
    
    public Integer getPageSize() {
        return pageSize;
    }
    public void setPageSize(Integer pageSize) {
        this.pageSize = pageSize;
    }
    public Integer getTotalCount() {
        return totalCount;
    }
    public void setTotalCount(Integer totalCount) {
        this.totalCount = totalCount;
    }
//------------------------------------ public Integer getPageCount() { //總頁數------>總頁數int c=(a%b==0?(a/b):(a/b)+1); this.pageCount=(totalCount%pageSize==0)?(totalCount/pageSize):((totalCount/pageSize)+1); return pageCount; } //------------------------------------

public void setPageCount(Integer pageCount) { this.pageCount = pageCount; } public Integer getCurrentPage() { return currentPage; } public void setCurrentPage(Integer currentPage) { this.currentPage = currentPage; } public List<?> getData() { return data; } public void setData(List<?> data) { this.data = data; } }

2 、Dao層sql

//分頁
    @Override
    //查詢總條數
public int getTotalCount() { // TODO Auto-generated method stub String sql="SELECT COUNT(*) from t_customer"; Connection connection=null; PreparedStatement ps = JDBCutil.getPreparedStatement(con, url, user, pwd1, sql); Customer customer=null; int num=0; try { ResultSet rs = ps.executeQuery(); while(rs.next()){ num=rs.getInt(1); } JDBCutil.closeAll(rs, connection, ps); return num; } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return 0; }
  //分頁查詢客戶信息 @Override
public List<Customer> getCustomer(int m, int n) { String sql="SELECT t_customer.cid, t_customer.custName,t_dict.dname,t_customer.custSource,t_customer.custPhone,t_customer.custMobile,t_dict.did" + " FROM t_customer INNER JOIN t_dict ON t_customer.custLevel=t_dict.did" +" LIMIT ?,?"; Connection connection=null; PreparedStatement ps = JDBCutil.getPreparedStatement(con, url, user, pwd1, sql); Customer customer=null; ArrayList<Customer> list = new ArrayList(); try { ps.setInt(1, m); ps.setInt(2, n); ResultSet rs = ps.executeQuery(); while(rs.next()){ customer=new Customer(rs.getInt(1),rs.getString(2), rs.getString(3), rs.getString(4), rs.getString(5), rs.getString(6),rs.getInt(7)); list.add(customer); } JDBCutil.closeAll(rs, connection, ps); return list; } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; }

三、Service層chrome

@Override
    //分頁
    public LimitUtil getCustomerInfo(int currentPage) {
        //獲得m,n
        LimitUtil limitUtil = new LimitUtil();
        limitUtil.setCurrentPage(currentPage);
        int m=(currentPage-1)*limitUtil.getPageSize();
        int n=limitUtil.getPageSize();
        List<Customer> customer = cd.getCustomer(m, n);
        //把limitUtil中未賦值的屬性賦值
        limitUtil.setTotalCount(cd.getTotalCount());
        limitUtil.setData(customer);//list類型
        
        return limitUtil;//進過以上賦值,limitUtil擁有頁面所須要的一些信息,把它返回
    }

四、Servlet數據庫

package com.zy.controller;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.zy.service.impl.CustomerServiceImpl;

import crm.zy.utils.LimitUtil;

/**
 * Servlet implementation class PageLimitServlet
 */
@WebServlet("/PageLimitServlet")
public class PageLimitServlet extends HttpServlet {
    
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //接收參數
        CustomerServiceImpl cs = new CustomerServiceImpl();
        String parameter = request.getParameter("currentPage");
        if(parameter!=null){
            int currentPage = Integer.parseInt(parameter);
            LimitUtil customerInfo = cs.getCustomerInfo(currentPage);
            //存域
            request.setAttribute("pageBean", customerInfo);
        }
        
        request.getRequestDispatcher("/WEB-INF/customer/limitPage.jsp").forward(request, response);
    }

    
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        
        doGet(request, response);
    }

}

五、Jspjsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core"  prefix="c"%>
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>分頁客戶列表</title>
        <meta name="renderer" content="webkit">
        <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
        <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
        <link rel="stylesheet" href="${pageContext.request.contextPath}/css/begtable.css" />
        <link rel="stylesheet" href="${pageContext.request.contextPath}/plugins/layui/css/layui.css" media="all" />
        <link rel="stylesheet" href="${pageContext.request.contextPath}/plugins/font-awesome/css/font-awesome.min.css">
    </head>
    <body>
            <div style="width:100%; height: 80%; border: 1px solid #009688;">
                <div class="beg-table-box">
                    <div class="beg-table-body">
                        <table class="beg-table beg-table-bordered beg-table-striped beg-table-hovered">
                                <tr>
                                    <th>客戶名稱</th>
                                    <th>客戶級別</th>
                                    <th>客戶來源</th>
                                    <th>固定電話</th>
                                    <th>移動電話</th>
                                    <th>操做</th>
                                </tr>
                            <c:forEach items="${pageBean.data}" var="customer">    
                                <tr>
                                    <td>${customer.custName}</td>
                                    <td>${customer.dname}</td>
                                    <td>${customer.custSource}</td>
                                    <td>${customer.custPhone}</td>
                                    <td>${customer.custMobile}</td><!-- 絕對路徑請求   值爲/crm -->
                                    <td><a href="${pageContext.request.contextPath}/ToUpdateServlet?id=${customer.cid}">修改</a>&nbsp;&nbsp;&nbsp;&nbsp;<a href="DeleteCustServlet?id=${customer.cid}&control=deleteCust" onclick="javascript:return confirm('請慎重考慮是否要刪除該數據!!!!')">刪除</a></td>
                                </tr>
                            </c:forEach>
                        </table>
                    </div>
                    <div class="beg-table-paged">
                    共[<B>${pageBean.totalCount}</B>]條記錄,[<B>${pageBean.pageCount}</B>]頁,當前第[<B>${pageBean.currentPage}</B>]頁
                    <c:if test="${pageBean.currentPage!=1 }">
                    [<B><a href="PageLimitServlet?currentPage=${pageBean.currentPage-1}">前一頁</a></B>]
                    </c:if>
                    
                    <c:if test="${pageBean.currentPage!=pageBean.pageCount}">
                    [<B><a href="PageLimitServlet?currentPage=${pageBean.currentPage+1}">後一頁</a></B>]
                    </c:if>
                    </div>
                </div>
            </div>
    </body>
</html>
相關文章
相關標籤/搜索