• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    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 ListUserBean> 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 ListStuBean> getDataList() {
        return dataList;
      }
      public void setDataList(ListStuBean> 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 ListUserBean> getUserListByStartIndex(int StartIndex) { //根据传入的limit第一位参数得到该参数后面的10条数据
        ListUserBean> 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 ListUserBean> getUserListByCurrPage(int currPage) {
        //通过当前页计算起始索引
        int StartIndex = (currPage - 1) * 10;
        ListUserBean> 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实现翻页查询功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
    如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

    您可能感兴趣的文章:
    • 通过MySQL优化Discuz!的热帖翻页的技巧
    • JAVA/JSP学习系列之八(改写MySQL翻页例子)
    • JAVA/JSP学习系列之六(MySQL翻页例子)
    • MySQL查询条件中in会用到索引吗
    • MySQL中查询某一天, 某一月, 某一年的数据代码详解
    • MySQL联表查询的简单示例
    • 解决MySQl查询不区分大小写的方法讲解
    • mysql实现查询数据并根据条件更新到另一张表的方法示例
    上一篇:MYSQL的主从复制知识点整理
    下一篇:CentOS 7 安装解压版mysql5.7的教程
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    MySql实现翻页查询功能 MySql,实现,翻页,查询功能,