MySql实现翻页查询功能

  

首先明确为什么要使用分页查询,因为数据庞大,查询不可能全部显示在页面上,如果全部显示在页面上,也会造成查询速度慢的情况,所以分页查询解决了①数据查询;②性能优化,等(其他问题欢迎补充)的问题。

  

<>强分页查询也分为真分页和假分页:

  

真分页:基于数据库查出的数据直接分页显示,优点是改变数据库数据不会影响查询结果,缺点是速度稍慢。

  

假分页:将所有数据查询出的数据,封装到列表集合缓存中,表现层方法调用执行。由于将数据封装为集合放入了内存中,所以速度较快,但缺点是数据库改变后,会出现不匹配的情况。

  

两种分页各有优缺点,小伙伴们视具体情况使用吧。

  

<强>下面要介绍的就是真分页的方法:

  

<强> 1,建立JavaBean

  

        进口java.io.Serializable;/* *   *用户实体类   * @author   *   */公共类出发实现Serializable {   *//* *用户ID   私人int id;/* *用户名字*/私人字符串名称;   公共出发(){   }   公共出发(int id字符串名称){   这一点。id=id;   this.name=名称;   }   公共int getId () {   返回id;   }   公共空间setId (int id) {   这一点。id=id;   }   公共字符串getName () {   返回名称;   }   公共空间setName(字符串名称){   this.name=名称;   }   @Override   公共字符串toString () {   返回“出发(id=" +身份证+ " name=" +名字+ "]”;   }   } 之前      

2,用于展示分页数据的JavaBean

  

     /* *   *用于展示分页数据的JavaBean对象   * @author   *   */进口并不知道;   公开课PagenationBean {/* *当前页数*/私人整数currPage;/* *总页数*/私人整数totalPage;/* *用于展示的表数据*/私人ListdataList;   公共整数getCurrPage () {   返回currPage;   }   公共空间setCurrPage(整数currPage) {   这一点。currPage=currPage;   }   公共整数getTotalPage () {   返回totalPage;   }   公共空间setTotalPage(整数totalPage) {   这一点。totalPage=totalPage;   }   公共ListgetDataList () {   返回dataList;   }   公共空间setDataList (ListdataList) {   这一点。dataList=dataList;   }   } 之前      

3, dao层实现类

  

        @Override   公共int getTotalCount(){//计算总的数据条数   this.setConnection ();   int totalCount=0;   尝试{   ps=con.prepareStatement (“select count(*)从t_user”);   rs=ps.executeQuery ();   如果(rs.next ()) {   totalCount=rs.getInt (1);   }   }捕捉(异常e) {   e.printStackTrace ();   最后}{   this.closeConnection ();   }   返回totalCount;   }   @Override   公共ListgetUserListByStartIndex (int StartIndex){//根据传入的限制第一位参数得到该参数后面的10条数据   ListuserList=new ArrayList<在();   出发出发=零;   this.setConnection ();   int totalCount=0;   尝试{   ps=con.prepareStatement (“select * from t_user限制& # 63;,10”);   StartIndex ps.setInt(1日);   rs=ps.executeQuery ();   而(rs.next ()) {   出发=new StuBean ();   userBean.setId (rs.getInt (" id "));   userBean.setName (rs.getString("名称"));   stuList.add(出发);   }   }捕捉(异常e) {   e.printStackTrace ();   最后}{   this.closeConnection ();   }   返回userList;   }      

4,服务层实现类

  

        私人IUserDao isd=new UserDaoImpl ();   @Override   公共int getTotalPage () {//得到数据据条数   int totalCount=isd.getTotalCount ();//计算总页数公式   int totalPage=(totalCount + 10 1)/10;   返回totalPage;   }   @Override   公共ListgetUserListByCurrPage (int currPage) {//通过当前页计算起始索引   int StartIndex=(currPage - 1) * 10;   ListuserList=isd.getStuListByStartIndex (StartIndex);   返回userList;   }   之前      

5,将查询出的数据放入页面展示就OK了。

  

以上方法中,分页显示的是10条数据,计算分析如下:

  

数据总条数:totalCount

  

每页显示条数:页大小

  

总页数:totalPage

  

起始索引StartIndex

MySql实现翻页查询功能