MySQL通用性较高的分页代码

java

浏览数:608

2019-1-13

片段 1片段 2片段 3


分页被引用页面 standard.jsp

<!-- 分页在底端被引用页面 -->
<!-- standard.jsp  -->

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 

总 ${page.totalCount} 条&nbsp; 
每页 ${page.pageSize} 条&nbsp; 
总 ${page.pageCount} 页 &nbsp; 
第 ${page.pageNow} 页&nbsp; &nbsp; &nbsp; 

<c:if test="${page.pageNow==1}">首页</c:if>
<c:if test="${page.pageNow!=1}"><a href="${pageContext.request.contextPath}${page.pageURL}?${page.fuSeaPara}&page.pageNow=1&page.pageSize=${page.pageSize}">首页</a></c:if>
&nbsp;
<c:if test="${page.pageNow==1}">上一页</c:if>
<c:if test="${page.pageNow!=1}"><a href="${pageContext.request.contextPath}${page.pageURL}?${page.fuSeaPara}&page.pageNow=${page.pageNow-1}&page.pageSize=${page.pageSize}">上一页</a></c:if>
&nbsp; 第<select onchange="location.href='${pageContext.request.contextPath}${page.pageURL}?${page.fuSeaPara}&page.pageNow='+this.value">
    <c:forEach var="selectvalue" begin="1" end="${page.pageCount}" step="1">
        <option value="${selectvalue}" ${page.pageNow eq selectvalue ?"selected='selected'":""}>
            ${selectvalue}   
        </option>
    </c:forEach>
</select>
页 
&nbsp;

<c:if test="${page.pageNow==page.pageCount}">下一页</c:if>

<c:if test="${page.pageNow!=page.pageCount}"><a class="nextPage" href="${pageContext.request.contextPath}${page.pageURL}?${page.fuSeaPara}&page.pageNow=${page.pageNow+1}&page.pageSize=${page.pageSize}" >下一页</a></c:if>
&nbsp;
<c:if test="${page.pageNow==page.pageCount}">尾页</c:if>
<c:if test="${page.pageNow!=page.pageCount}"><a href="${pageContext.request.contextPath}${page.pageURL}?${page.fuSeaPara}&page.pageNow=${page.pageCount}&page.pageSize=${page.pageSize}">尾页</a></c:if>
&nbsp;&nbsp;&nbsp;

 每页显示
 <select onchange="location.href='${pageContext.request.contextPath}${page.pageURL}?${page.fuSeaPara}&page.pageSize='+this.value">
                                                 <!-- 总数如果小于15 显示 总数页,如果大于15 显示15 -->
    <c:forEach var="selectvalue" begin="1" end="${page.totalCount<15?page.totalCount:15}" step="1">
        <option value="${selectvalue}" ${page.pageSize eq selectvalue ?"selected='selected'":""}>
            ${selectvalue}   
        </option>
    </c:forEach>
</select>
条


分页类专用PagingMS.java

package com.auth.util;

import java.util.ArrayList;
import java.util.List;

/*
 * author KEN
 * 2017.10.29
 * 
 * 
 * 
 * */

//MySql 下通用 分页类
public class PagingMS {
   
       int pageSize;    //每页条目数  limit 第二个参数,查询多少条
      
       int totalCount;  //总条目数
       
       int pageCount;   //总页数
       
       int pageNow;     //当前页码
       
       int startNum;    //limit  第一个参数从第几条开始查
       
       String fuSeaPara;   // 模糊查询参数存储  ,下一页 的参数
       
       String pageURL;  //为满足  分页页面复用性  跳不同的action
       
       private List<?> resultList;      //返回数据库分页查询 结果集
       
    
       public String getFuSeaPara() {
        return fuSeaPara;
      }

       public void setFuSeaPara(String fuSeaPara) {
        this.fuSeaPara = fuSeaPara;
      }
  
       public String getPageURL() {
        return pageURL;
      }

      public void setPageURL(String pageURL) {
        this.pageURL = pageURL;
      }

       public int getPageSize() {
           //防止查出总条目为0,<5 ,系统会把 totalCount为0  赋值给 pageSize,而在求总页数 pageCount 是 pageSize会作为分母 ,系统报错。 
            if(pageSize==0){
                pageSize=1;
            }
            return pageSize;
        }

        public void setPageSize(int pageSize) {
            this.pageSize = pageSize;
        }
        
        //通过参数计算每页的条目数
        public int calcPageSize(String ps){
            if(null==ps){
                //总条数大于5 ,默认5,小于5,就是 总条数,不写的话,在总条数小于5 ,页面会显示每页显示1条 
                //return 5;
                return this.getTotalCount()>5?5:this.getTotalCount();
            }
            else return Integer.parseInt(ps);
        }

        public int getTotalCount() {
            return totalCount;
        }

        public void setTotalCount(int totalCount) {
            this.totalCount = totalCount;
        }

        public int getPageCount() {
            return totalCount%getPageSize()==0?totalCount/getPageSize():totalCount/getPageSize()+1;
        }

        public void setPageCount(int pageCount) {
           this.pageCount = pageCount;
        }

        public int getPageNow() {
            return pageNow;
        }

        public void setPageNow(int pageNow) {
            this.pageNow = pageNow;
        }
        
        //计算当前页
        public int calcPageNow(String pn){
            if(null==pn){
                return 1;
            }
            else return Integer.parseInt(pn);
        }

        public int getStartNum() {
            return (getPageNow()-1)*getPageSize();
        }

        public void setStartNum(int startNum) {
            this.startNum = startNum;
        }
        
        public List<?> getResultList() {
            return resultList;
        }

        public void setResultList(List<?> resultList) {
            this.resultList = resultList;
        }

        @Override
        public String toString() {
            return "PagingMS [pageSize=" + pageSize + ", totalCount=" + totalCount
                    + ", pageCount=" + pageCount + ", pageNow=" + pageNow
                    + ", startNum=" + startNum + ", resultList=" + resultList + "]";
        }
       

      
}  


Controller

package com.auth.controller;

import java.math.BigDecimal;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import net.sf.json.JSONObject;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;

import com.alibaba.druid.util.StringUtils;
import com.auth.entity.CheckBatch;
import com.auth.entity.Store;
import com.auth.entity.StoreCheck;
import com.auth.entity.UserInfo;
import com.auth.service.CheckProductService;
import com.auth.service.StoreService;

import com.auth.util.PagingMS;/*
 * author  jerrychen
 * data  2017.10.25
 * 
 *
 * */

 //全查所有盘点表并 分页显示
    @RequestMapping("/showAllStoreCheListByPaging")
    public ModelAndView showAllStoreCheListByPaging(HttpServletRequest request,HttpServletResponse response){
        System.out.println("进入分页显示全部盘点表");
        //下拉列表显示所有  盘点批次 ,利用模糊查询,hsm2为空,进行全查。
        HashMap hsm2=new HashMap();
        List <CheckBatch> CheckBatchList=cps.likeFindCheckBatchByPagingSer(hsm2);
        request.setAttribute("CheckBatchListEL", CheckBatchList);
        
        PagingMS pgm=new PagingMS();
        
        int scCount=cps.findAllStoreCheckCountSer();
        pgm.setTotalCount(scCount);
        
        //每页条目数  ,limit 第2个参数
        
        String ps=request.getParameter("page.pageSize");
        
        //给对象赋 每页显示条数
        pgm.setPageSize(pgm.calcPageSize(ps));
        
        //当前页数目
        
        String pn=request.getParameter("page.pageNow");
        
        //赋当前页值
        pgm.setPageNow(pgm.calcPageNow(pn));    
        
        //为满足  分页页面复用性,设置
        
        String pageURL="/checkbatch/showAllStoreCheListByPaging.action";
        pgm.setPageURL(pageURL);

        HashMap hsm=new HashMap();
        hsm.put("startNumHKey", pgm.getStartNum());
        hsm.put("pageSizeHKey", pgm.getPageSize());
      
        pgm.setResultList(cps.findAllStoreCheckByPagingSer(hsm));
        System.out.println("pgm     "+pgm);
        ModelAndView mav = new ModelAndView();
        mav.addObject("page", pgm);
        //xml有配置 所以    可以   pages  也不能加  .jsp
        mav.setViewName("storeCheck-list");
        return mav;
    }