• mysql MVC jsp实现表分页


    mysql是轻量级数据库

    三层架构中实现简单的分页

    在数据库sql编程中需要编写sql语句

    SELECT * FROM sys.student limit 5,5;

    limit x,y

    x是开始节点,y是开始节点后的需要显示的长度。

    在jdbc编程中需要给出x和y

    一般是页数*页码,显示的长度。

    代码如下

    public ArrayList query(int page) {
            Connection con=Database.DatabaseConnection.getConnection();
            PreparedStatement pstmt;
            try {
                pstmt=con.prepareStatement("select * from sys.student limit ?,?");
                pstmt.setInt(1, (page-1)*5);
                pstmt.setInt(2, page*5);
                ResultSet rs=pstmt.executeQuery();
                ArrayList stus=new ArrayList();
                Stu stu;
                while(rs.next()){
                    stu=new Stu(rs.getString("name"),rs.getInt("age"));
                    stus.add(stu);
                }
                return stus;
            } catch (SQLException ex) {
                Logger.getLogger(operationStuImpl.class.getName()).log(Level.SEVERE, null, ex);
            }
            return null;
        }

    这样给出页码就可以得到一页的表中的元组。

    还有如何得到表中元组的数量来限制最后一页。

    数据库编程

    public int queryCount() {
            //得到所有的行
            Connection con=Database.DatabaseConnection.getConnection();
            PreparedStatement pstmt;
            try {
                pstmt=con.prepareStatement("select count(*) from sys.student");
                //pstmt.setString(1, name);
                ResultSet rs=pstmt.executeQuery();
                //找到学生信息
                //Stu stu=new Stu();
                while(rs.next()){
                int count=rs.getInt(1);
                return count;
                }
            } catch (SQLException ex) {
                Logger.getLogger(operationStuImpl.class.getName()).log(Level.SEVERE, null, ex);
            }
            return 0;
        }

    实现所有元组的获取

    servlet的实现:

    String page=request.getParameter("page");
            int page1=Integer.parseInt(page);
            int count=operationFactory.operationFactory.getOperationDao().queryCount();
            ArrayList stus;
            if(page1<=count/5){
                //request.setAttribute("page1", page1-1);
                request.setAttribute("page2", page1+1);
            }else{
            //request.setAttribute("page1", page1-1);
                request.setAttribute("page2", page1);
            }
            if(page1>1)
            {
            request.setAttribute("page1", page1-1);
            }else{
            request.setAttribute("page1", page1);
            }
            stus=operationFactory.operationFactory.getOperationDao().query(page1);
            
            
            request.setAttribute("stus", stus);
            request.setAttribute("count", (count/5+1));
            request.getRequestDispatcher("query.jsp").forward(request, response);

    前端jsp实现:


                首页
                上一页
                下一页
               
               
                 
               

                尾页
               

    page1和page2分别实现的是前一页和后一页。

    ${i}实现的是总页数,迭代的结果。这样可以得到那一页的结果集。

    实现页面:

  • 相关阅读:
    代码随想录Day43 | 1049.最后一块石头的重量II | 494. 目标和 | 474. 一和零
    错误消息 “Column ‘device_id‘ in field list is ambiguous“
    [力扣] 第90场双周赛 回顾
    【C++ 学习 ㉝】- C++11 使用 using 定义别名
    【python中处理日期和时间一】_time及calendar相关函数
    “卫星-无人机-地面”遥感数据快速使用及地物含量计算的实现方法
    windows内核驱动开发
    SpringBoot 3.0 新特性,内置声明式 HTTP 客户端
    CCAA 信息安全管理体系 考试大纲及重点题目记忆
    Laravel chunk和chunkById的坑
  • 原文地址:https://blog.csdn.net/qq_32663053/article/details/133949624