Java语言是一门面向对象的编程,所以想实现分页功能就先设计一个分页的类(不设计也行,但是那就没什么意义了)。因为这个类不是专门给某个数据准备的,是要设计成只要想分页都可以使用这个类。所以就要把这个类设计成一个泛型类。类里一般有几个实例变量总页数、总条数、每页条数、当前页数、数据,然后还有这几个实例变量的get、set方法。

    第一步:设计一个分页工具类PageBean

分页算法java java分页处理数据_当前页

第二步:准备一个dao实现类,存放两方法,一个是查询数据的方法,一个是查询数据总条数的方法。

查询数据的方法需要带两个参数,pageNumber:当前页码,pageSize:每页显示的条数

查询数据总条数的方法:

public int findAllCount1() {

      int count = 0;

      try {

          conn = JdbcUtil.getConnection();

          String findAllCountSql = "SELECT COUNT(*) FROM sys_user AS u \r\n" +

              "LEFT JOIN sys_role AS r ON u.RoleID = r.RoleID\r\n" +

              "LEFT JOIN sys_userpersonal AS up ON u.UserID = up.UserID\r\n";

          st = conn.prepareStatement(findAllCountSql);

          rs = st.executeQuery();

          while(rs.next()) {

              count = rs.getInt(1);

          }

      } catch (SQLException e) {

          e.printStackTrace();

      } finally {

          JdbcUtil.close(conn, st, rs);

      }

      return count;

}

第三步:准备一个service实现类,存放处理一些业务的操作

public PageBean<UserPersonal> findPageService(int pageNumber, int pageSize){

        //创建实体类

        UserDao ud = new UserDaoImpl();

        //查询总共有多少条数据,调用dao中查询总条数的方法

        int countAll = ud.findAllCount(up);

        //计算总页数

        int pageAll = countAll%pageSize==0?countAll/pageSize:countAll/pageSize+1;

        //判断获取到的页面是否合法

        if(pageNumber>pageAll) {

            //如果当前页码大于总页码,则将总页码数赋给当前页码

            pageNumber=pageAll;

        }

        if(pageNumber<1) {

            //如果当前页码小于1,证明页码不存在,则将当前页码等于1

            pageNumber=1;

        }

        //调用查询方法

        List<UserPersonal> listpageNumber = ud.findPage(pageNumber, pageSize, up);

        //创建分页工具类对象

        PageBean<UserPersonal> pageBean = new PageBean<UserPersonal>();

        pageBean.setCountAll(countAll);//总条数

        pageBean.setList(listpageNumber);//查询出来的数据

        pageBean.setPageSize(pageSize);//每页条数

        pageBean.setPageAll(pageAll);//总页数

        pageBean.setPageNumber(pageNumber);//当前页数

        //返回结果

        return pageBean;

  }

第四步:准备一个servlet,接收返回数据

private void list(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        String pageNumber= request.getParameter("pageNumber");//当前页码

        String pageSize = request.getParameter("pageSize");//每页条数

        //判断页码和条数是否为空(首次访问一般不带参数)

        if(OtherUtil.isNull(pageNumber)) {

            //页码为空,设置为第一页

            pageNumber = "1";

        }

        if(OtherUtil.isNull(pageSize)) {

            //条数为空,设置为每页5条数据

            pageSize = "5";

        }

        //创建一个PageBean对象(存放最后结果)

        PageBean<UserPersonal> pageBeanUserPersonal = new PageBean<UserPersonal>();

        //创建一个UserService对象(调用分页方法)

        UserService us = new UserServiceImpl();

        //调用分页方法

        pageBeanUserPersonal = us.findPageService(Integer.parseInt(pageNumber), Integer.parseInt(pageSize));

        //使用json返回到页面

        JSONArray json = JSONArray.fromObject(pageBeanUserPersonal);

        response.getWriter().print(json);

}

第五步:对页面进行操作显示,数据输出格式如下:

分页算法java java分页处理数据_java_02

结果:

分页算法java java分页处理数据_java_03

分页算法java java分页处理数据_当前页_04