天天看点

Mysql+servlet实现分页

使用方法看类的说明,使用的是servlet,在框架上使用的话自行修改一下吧。。。。。分页语句使用的是Mysql的

package com.turing.util;

import java.sql.SQLException;
import java.util.List;
import java.util.Map;

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

import com.turing.dao.DaoImpl;
import com.turing.dao.IDao;

/**
 * Servlet中用于分页的类
 * 使用在类中使用了dao的查询方法,使用的时候如果dao的查询语句报错请换成自己的
 * 使用方法:将page对象创建出来调用pageFenye的方法四个参数在方法中有说明
 *          方法中已经将分页的list存入作用域中,分页的按钮字符串已经存入作用域中    
 * 在jsp中直接使用${pageStr}就可以
 * jsp中<c:forEach items="${list}" var="map" varStatus="i">直接使用list
 * */
public class page {

         private List records;// 记录
         private Long totalrecordnumber;// 总记录数
         private Integer startindex;// 第一页
         private Integer endindex;// 最后一页
         private Integer totalpagenumber;// 总页数
         private Integer currentpage;// 当前页
         IDao dao=new DaoImpl();//使用的dao
        //获得总页数 显示页数 当前页数 第一页 最后一页
         public void setIndex(int currentpage, int viewperpage, int totalpagenumber) {
          if (viewperpage >= totalpagenumber) {
           startindex = ;
           endindex = totalpagenumber;
          } else {
           if (currentpage <= viewperpage / ) {
            startindex = ;
            endindex = viewperpage;
           } else if ((currentpage + viewperpage / ) > totalpagenumber) {
            startindex = totalpagenumber - viewperpage + ;
            endindex = totalpagenumber;
           } else {
            startindex = currentpage - (viewperpage - ) / ;
            endindex = currentpage + viewperpage / ;
           }
          }
         }
        /**
         * return pageStr和list(分页后的list已经存入作用域中)
         * 传入参数:
         * sql:查询的表的sql语句
         * maximum:每页显示多少条
         * viewperpage:可以显示多少页
         * */
        public void pageFenye(HttpServletRequest request, HttpServletResponse response,String sql,int maximum,int viewperpage) throws ClassNotFoundException, SQLException{
             // 当前是第几页
             String currentpageStr = request.getParameter("currentpage") == null ? "1" : request.getParameter("currentpage");
             int currentpage = Integer.parseInt(currentpageStr);
             // 每页显示多少条

             // 可以显示多少页
             //分页查询语句
             List<Map<String, Object>> listPage = dao.executeQueryForList(""+sql+" limit "+ (currentpage - ) * maximum + "," + maximum);
             //查询全部
             List<Map<String, Object>> listAll = dao.executeQueryForList(sql);
             int count=listAll.size();
             this.records = listAll;
             this.totalrecordnumber = (long) count;
             this.currentpage = currentpage;
             totalpagenumber = (int) (totalrecordnumber % maximum ==  ? totalrecordnumber / maximum: totalrecordnumber / maximum + );//获得总页数
             setIndex(currentpage, viewperpage, totalpagenumber);

             String pageStr="  <div class=\"text-right\">总共"+listAll.size()+"条数据</div> "+
                            " <div class=\"btn btn-group\" style=\"display:flex;justify-content:flex-end\" align=\"right\" style=\"width: 80%\"> ";
                                for(int i=startindex ;i<endindex;i++){
                                    if(currentpage==i){
                                        pageStr+=" <button class=\"btn btn-primary\">第"+i+"页</button>  ";
                                    }
                                    if(currentpage!=i){
                                        pageStr+="<button class=\"btn btn-primary\" onclick=\"topage('"+i+"')\">第"+i+"页</button>  ";
                                    }
                                }
                                pageStr+=" </div>" ;
            request.setAttribute("list",listPage );
            request.setAttribute("pageStr",pageStr );


        }


         public List getRecords() {
             return records;
         }
         public Long getTotalrecordnumber() {
             return totalrecordnumber;
         }
         public Integer getStartindex() {
             return startindex;
         }
         public Integer getEndindex() {
             return endindex;
         }
         public Integer getTotalpagenumber() {
             return totalpagenumber;
         }
         public Integer getCurrentpage() {
             return currentpage;
         }
}
           

继续阅读