![1490cbda2a83dbcb79c426be29b93922.png](https://i-blog.csdnimg.cn/blog_migrate/8d6ec8bfb95bd7f2e62a785c3ebbfdaa.jpeg)
一、实体类的设计
二、分页工具PageBean.java
private int currentPage = 1; // 当前页, 默认显示第一页 private int pageCount = 8; // 每页显示的行数(查询返回的行数), 默认每页显示4行 private int totalCount; // 总记录数 private int totalPage; // 总页数 = 总记录数 / 每页显示的行数 (+ 1) private List pageData; // 分页查询到的数据
三、dao数据访问:获取总记录数、分页显示数据
// 创建QueryRunner对象 private QueryRunner qr = JdbcUtils.getQueryRuner(); // 得到总记录数 public int getTotalCount() { String sql = "select count(*) from grjbxx"; try { // 执行查询, 返回结果的第一行的第一列 Long count = qr.query(sql, new ScalarHandler()); return count.intValue(); } catch (Exception e) { throw new RuntimeException(e); } } // 分页显示全部数据 public void listGrjbxxAll(PageBean pb) { // 查询总记录数; 设置到pb对象中 int totalCount = this.getTotalCount(); pb.setTotalCount(totalCount); /* * 问题: jsp页面,如果当前页为首页,再点击上一页报错! 如果当前页为末页,再点下一页显示有问题! 解决: 1. 如果当前页 <= 0; * 当前页设置当前页为1; 2. 如果当前页 > 最大页数; 当前页设置为最大页数 */ // 判断 if (pb.getCurrentPage() <= 0) { pb.setCurrentPage(1); // 把当前页设置为1 } else if (pb.getCurrentPage() > pb.getTotalPage()) { pb.setCurrentPage(pb.getTotalPage()); // 把当前页设置为最大页数 } // 1. 获取当前页: 计算查询的起始行、返回的行数 int currentPage = pb.getCurrentPage(); int index = (currentPage - 1) * pb.getPageCount(); // 查询的起始行 int count = pb.getPageCount(); // 查询返回的行数 // 3. 分页查询数据; 把查询到的数据设置到pb对象中 String sql = "select * from grjbxx limit ?,?"; try { // 根据当前页,查询当前页数据(一页数据) List pageData = qr.query(sql, new BeanListHandler(Grjbxx.class), index, count); // 设置到pb对象中 pb.setPageData(pageData); } catch (Exception e) { throw new RuntimeException(e); } }
四、servlet调用dao的方法,跳转到JSP页面显示
try { // 1. 获取“当前页”参数; (第一次访问当前页为null) String currPage = request.getParameter("currentPage"); // 判断 if (currPage == null || "".equals(currPage.trim())) { currPage = "1"; // 第一次访问,设置当前页为1; } // 转换 int currentPage = Integer.parseInt(currPage); // 2. 创建PageBean对象,设置当前页参数; 传入service方法参数 PageBean pageBean = new PageBean(); pageBean.setCurrentPage(currentPage); // 3. 调用service // 【pageBean已经被dao填充了数据】 GrjbxxDao grjbxxdao = new GrjbxxDao(); grjbxxdao.listGrjbxxAll(pageBean); // 4. 保存pageBean对象,到request域中 request.setAttribute("pageBean