2018-03-04 web用户项目(三):实现用户信息分页查询

笔记如下

  • 思路:
    1.每一页里有十条记录,每页就是一个PageBean,封装了总记录数,当前是第几页,每页条数,当前是第几页的数据
2018-03-04 web用户项目(三):实现用户信息分页查询_第1张图片
2018-03-01_214242.png

2.两个公式


2018-03-01_214242.png
  • *jsp

    
        当前页没有数据
    
    
        

当前是${pageBean.pageNum}页数据

客户姓名 客户性别 客户生日 客户邮箱 客户手机 客户爱好 客户类型 客户描述
${customer.name} ${customer.gender} ${customer.birthday} ${customer.email} ${customer.cellphone} ${customer.preference} ${customer.type} ${customer.description}

  • web层(PageQueryServlet.java)
//拿到需要看到页是那一页
        String pagenum = request.getParameter("pagenum");
        
        //调用业务层去查询目标页的数据
        CustomerService cs = new CustomerService();
        
        //返回当前页的目标数据是不够的,还要做导航条
        //为了做分页,需要引入一个新的javaBean
        PageBean pageBean =  cs.pageQuery(pagenum);
        
        //将pagebean存到request域中
        request.setAttribute("pageBean", pageBean);
        request.getRequestDispatcher("/bean.jsp").forward(request, response);
  • 业务层(CustomerService.java)
//完成分页查询的业务方法:
    public PageBean pageQuery(String num) {
        
        int numberPerPage = 10;//默认每页十条
        
        int pageNum = Integer.parseInt(num);//当前页是那一页
        
          
          //从数据库里查找总记录数
        int totalRecordsCount = cdao.getToltalCount();
        
        //运用公式
        int totalPageNum = (totalRecordsCount + numberPerPage-1)/numberPerPage;//总页数
        
        //select * from customers limit ?,?
        int startIndex = (pageNum-1)*numberPerPage;

        //从数据库里查找10条记录
        List customers = cdao.getCurrectPageData(startIndex,numberPerPage);
        
        //封装数据
        PageBean pageBean = new PageBean();
        pageBean.setNumberPerPage(numberPerPage);
        pageBean.setCustomers(customers);
        pageBean.setPageNum(pageNum);
        pageBean.setTotalPageNum(totalPageNum);
        pageBean.setTotalRecordsCount(totalRecordsCount);
        
        return pageBean;
    }

dao层(CustomerDaoImpl.java)

    //获得总记录条数
    @Override
    public int getToltalCount() {
        
        QueryRunner runner = new QueryRunner(JdbcUtils.getDataSource());
        
        try {
         long count =  (long) runner.query("select count(*) from customers", new ScalarHandler());
         return (int)count;
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
        
    }
    
    //查询目标页的数据返回
    @Override
    public List getCurrectPageData(int startIndex, int numberPerPage) {
        
        QueryRunner runner = new QueryRunner(JdbcUtils.getDataSource());
        
        String sql = "select * from customers limit ?,?";
        try {
            return runner.query(sql, new BeanListHandler(Customer.class),startIndex,numberPerPage);
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
        
        
        
    }

实现效果:


2018-03-04 web用户项目(三):实现用户信息分页查询_第2张图片
4.png

你可能感兴趣的:(2018-03-04 web用户项目(三):实现用户信息分页查询)