急需mysql数据库分页代码 请高手们写个完整点的代码 小弟万分感激

解决方案 »

  1.   

    如果使用框架,例如ibatis,
    可以直接调用框架的API,
    不需要在数据库上操作分页
      

  2.   


    <%@ page contentType="text/html; charset=gb2312" language="java" errorPage="../error.jsp" %>
    <script language="JavaScript"><!--
    function Jumping(){
      document.PageForm.submit();
      return ;
    }function gotoPage(pagenum){
      document.PageForm.jumpPage.value = pagenum;
      document.PageForm.submit();
      return ;
    }-->
    </script>每页<%=pageCtl.rowsPerPage%>行
    共<%=pageCtl.maxRowCount%>行
    第<%=pageCtl.curPage%>页
    共<%=pageCtl.maxPage%>页
    <BR>
    <%if(pageCtl.curPage==1){ out.print(" 首页 上一页");   }else{  %>   
    <A HREF="javascript:gotoPage(1)">首页</A>
    <A HREF="javascript:gotoPage(<%=pageCtl.curPage-1%>)">上一页</A>
    <%}%>
    <%if(pageCtl.curPage==pageCtl.maxPage){ out.print("下一页 尾页");   }else{  %>   
    <A HREF="javascript:gotoPage(<%=pageCtl.curPage+1%>)">下一页</A>
    <A HREF="javascript:gotoPage(<%=pageCtl.maxPage%>)">尾页</A>
    <%}%>
    转到第<SELECT name="jumpPage" onchange="Jumping()">
         <% for(int i=1;i<=pageCtl.maxPage;i++)  {
         if (i== pageCtl.curPage){
         %>
         <OPTION selected value=<%=i%>><%=i%></OPTION>
         <%}else{%>
         <OPTION value=<%=i%>><%=i%></OPTION>
         <%}}%>   
         </SELECT>页
      

  3.   

    分页的核心代码:/**
     * 执行Mysql分页
     * 在页面中引用<%@include file="page.jsp" %>即可
     * @param sql
     * 传入的sql语句
     * @param request
     * 传入的request
     *@param pagesize
     *传入分页大小如默认10条每页
     * @return
     * 返回数据集List结果,每条记录以Map存储(key,value)key为数据库表中字段名,均小写
     */
    public  List getMysqlPageList(String sql, HttpServletRequest request, int pagesize) {
    Page page = new Page();
    if (pagesize!=-1)
    page.setPagesize(pagesize);
    page.setRscount(executeCount(sql));
    page.execute(request);//生成分页工具条pagetool
    String newsql=sql +" LIMIT "+(page.getCurrentpage()-1)*page.getPagesize() +","+ page.getPagesize();
    List list = executeQuery(newsql);
    return list;
    }

    public class Page {
    // 分页相关变量
    private int currentpage = 1; // 当前是第几页 private int pagecount = 0; // 一共有多少页 private int rscount = 0; // 一共有多少行 private int pagesize = GGS.PAGESIZE; // 每页有多少行[默认为5行] private HttpServletRequest request;// 传入request 计算当前页 /**
     * 空构造
     */
    public Page() { } public int getCurrentpage() {
    return currentpage;
    } public void setCurrentpage(int currentpage) {
    this.currentpage = currentpage;
    } public int getPagecount() {
    return pagecount;
    } public void setPagecount(int pagecount) {
    this.pagecount = pagecount;
    } public int getRscount() {
    return rscount;
    } public void setRscount(int rscount) {
    this.rscount = rscount;
    } public int getPagesize() {
    return pagesize;
    } public void setPagesize(int pagesize) {
    this.pagesize = pagesize;
    } /**
     * 获取总页数
     * 
     * @return int
     */
    public int getPageCount() {
    try {
    this.pagecount = ((this.rscount - 1) / this.pagesize) + 1;
    } catch (Exception ex) {
    this.pagecount = 0;
    }
    return this.pagecount;
    }
    /**
     * 获取当前页码的设置
     * 
     * @return int
     */
    private int getCurrentPage() {
    try {
    if (request.getParameter("currentpage") != null
    && Integer.parseInt(request.getParameter("currentpage")) > 1) {
    this.currentpage = Integer.parseInt(request
    .getParameter("currentpage"));
    } else {
    this.currentpage = 1;
    }
    } catch (Exception ex) {
    this.currentpage = 1;
    }
    return this.currentpage;
    }
    /**
     * 把request里的参数 生成 &username=admin&password=123
     * 
     */ private String getParams() {
    Enumeration paramnames = request.getParameterNames();
    StringBuffer sb = new StringBuffer();
    while (paramnames.hasMoreElements()) {
    String paramname = (String) paramnames.nextElement();
    if (paramname.equals("currentpage"))
    continue;
    String[] paramvalues = request.getParameterValues(paramname);
    if (null != paramvalues) {
    for (int i = 0; i < paramvalues.length; i++) {
    sb.append("&" + paramname + "=" + paramvalues[i]);
    } } } return sb.toString();
    } /**
     * 执行分页
     * @param sql
     * 传入的sql语句
     * @param request
     * 传入的request
     * @return
     * 返回数据集结果
     */
    public void execute( HttpServletRequest request) {
    this.request = request;
    // 加上上下文路径
    String filepath ="";
    filepath = request.getRequestURI()+"?"+getParams();
    // 获取当前页
    this.getCurrentPage();
    // 计算总页数
    this.getPageCount();
    //保存变量至request
    Map ggspage  = new HashMap();
    ggspage.put("currentpage", this.getCurrentpage());
    ggspage.put("url", filepath);
    ggspage.put("page_count", this.getPagecount());
    ggspage.put("rs_count", this.getRscount());
    ggspage.put("page_size", this.getPagesize());
    request.setAttribute("ggspage", ggspage);
    } public HttpServletRequest getRequest() {
    return request;
    } public void setRequest(HttpServletRequest request) {
    this.request = request;
    }
    }
      

  4.   

       &    study