千家信息网

MySql实现翻页查询功能

发表于:2024-09-22 作者:千家信息网编辑
千家信息网最后更新 2024年09月22日,首先明确为什么要使用分页查询,因为数据庞大,查询不可能全部显示在页面上,如果全部显示在页面上,也会造成查询速度慢的情况,所以分页查询解决了①数据查询;②性能优化,等(其他问题欢迎补充)的问题。分页查询
千家信息网最后更新 2024年09月22日MySql实现翻页查询功能

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

分页查询也分为真分页和假分页:

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

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

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

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

1、建立JavaBean

import java.io.Serializable;/** * 用户实体类 * @author  * */public class UserBean implements Serializable {  /**用户ID*/  private int id;  /**用户名字*/  private String name;  public UserBean() {  }  public UserBean(int id, String name) {    this.id = id;    this.name = name;  }  public int getId() {    return id;  }  public void setId(int id) {    this.id = id;  }  public String getName() {    return name;  }  public void setName(String name) {    this.name = name;  }  @Override  public String toString() {    return "UserBean [id=" + id + ", name=" + name + "]";  }}

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

/** * 用于展示分页数据的JavaBean对象 * @author * */import java.util.List;public class PagenationBean {  /** 当前页数 */  private Integer currPage;  /** 总页数 */  private Integer totalPage;  /** 用于展示的table数据 */  private List dataList;  public Integer getCurrPage() {    return currPage;  }  public void setCurrPage(Integer currPage) {    this.currPage = currPage;  }  public Integer getTotalPage() {    return totalPage;  }  public void setTotalPage(Integer totalPage) {    this.totalPage = totalPage;  }  public List getDataList() {    return dataList;  }  public void setDataList(List dataList) {    this.dataList = dataList;  }}

3、dao层实现类

 

 @Override  public int getTotalCount() { //计算总的数据条数    this.setConnection();    int totalCount = 0;    try {      ps = con.prepareStatement("select count(*) from t_user");      rs = ps.executeQuery();      if (rs.next()) {        totalCount = rs.getInt(1);      }    } catch (Exception e) {      e.printStackTrace();    } finally {      this.closeConnection();    }    return totalCount;  }  @Override  public List getUserListByStartIndex(int StartIndex) { //根据传入的limit第一位参数得到该参数后面的10条数据    List userList = new ArrayList<>();    UserBean userBean= null;    this.setConnection();    int totalCount = 0;    try {      ps = con.prepareStatement("select * from t_user limit ? , 10");      ps.setInt(1, StartIndex);      rs = ps.executeQuery();      while (rs.next()) {        userBean= new StuBean();        userBean.setId(rs.getInt("id"));        userBean.setName(rs.getString("name"));        stuList.add(userBean);      }    } catch (Exception e) {      e.printStackTrace();    } finally {      this.closeConnection();    }        return userList;  }  

4、service层实现类

  

private IUserDao isd = new UserDaoImpl();  @Override  public int getTotalPage() {    //得到数据据条数    int totalCount = isd.getTotalCount();    //计算总页数公式    int totalPage = (totalCount + 10 -1)/10;    return totalPage;  }  @Override  public List getUserListByCurrPage(int currPage) {    //通过当前页计算起始索引    int StartIndex = (currPage - 1) * 10;    List userList = isd.getStuListByStartIndex(StartIndex);    return userList;  }

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

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

   数据总条数:  totalCount

  每页显示条数: pageSize

  总页数:    totalPage

  起始索引    StartIndex

  当前页数    currPage

  总页计算公式:

     totalCount % pageSize

      如果余数为0 --> totalPage=totalCount / pageSize

       如果余数不为0 --> totalPage=totalCount / pageSize +1

    得出结论:totalPage = (totalCount + pageSize -1)/pageSize

总结

以上所述是小编给大家介绍的MySql实现翻页查询功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

0