MySql实现翻页查询功能

作者:0vs1 时间:2024-01-16 11:32:35 

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

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

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

假分页:将所有数据查询出的数据,封装到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<UserBean> 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<StuBean> getDataList() {
   return dataList;
 }
 public void setDataList(List<StuBean> 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<UserBean> getUserListByStartIndex(int StartIndex) { //根据传入的limit第一位参数得到该参数后面的10条数据
   List<UserBean> 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<UserBean> getUserListByCurrPage(int currPage) {
   //通过当前页计算起始索引
   int StartIndex = (currPage - 1) * 10;
   List<UserBean> 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实现翻页查询功能网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

来源:https://www.cnblogs.com/hpqbh/archive/2019/11/12/11839334.html

标签:mysql,翻页,查询
0
投稿

猜你喜欢

  • python MysqlDb模块安装及其使用详解

    2024-01-15 15:21:44
  • 如何通过python检查文件是否被占用

    2023-03-20 12:25:00
  • 三种Python比较两个时间序列在图形上是否相似的方法分享

    2023-04-26 20:57:12
  • php中重定向网页跳转方法总结案例教程

    2023-06-11 20:47:18
  • 详解OpenCV中直方图,掩膜和直方图均衡化的实现

    2022-10-30 12:03:33
  • python open读取文件内容时的mode模式解析

    2022-02-05 20:03:35
  • python机器学习基础K近邻算法详解KNN

    2024-01-01 05:44:57
  • python 实现朴素贝叶斯算法的示例

    2023-12-09 12:59:11
  • python 实现端口扫描工具

    2022-12-05 23:02:45
  • python numpy.ndarray中如何将数据转为int型

    2022-11-21 16:14:09
  • 详解MySQL数据库安全配置

    2010-01-26 15:19:00
  • jdbc操作mysql数据库实例

    2024-01-26 01:59:50
  • Dreamweaver MX网页图片热区使用方法

    2008-05-20 12:50:00
  • 为ABP框架配置数据库

    2024-01-19 21:52:05
  • ASP代理采集的核心函数代码

    2010-01-02 20:43:00
  • GO语言映射(Map)用法分析

    2024-04-28 09:17:53
  • js控制输入框获得和失去焦点时状态显示的方法

    2024-04-17 10:24:04
  • python将天气预报可视化

    2021-01-19 01:37:46
  • python基础教程之csv文件的写入与读取

    2021-06-18 21:21:00
  • python中pandas.DataFrame的简单操作方法(创建、索引、增添与删除)

    2021-05-15 16:25:58
  • asp之家 网络编程 m.aspxhome.com