博客
关于我
mysql高级查询~分页查询
阅读量:789 次
发布时间:2023-02-13

本文共 1873 字,大约阅读时间需要 6 分钟。

分页设计原理与实现

分页设计原理

在项目开发中,分页设计是为了有效地处理大量数据展示,提高用户体验和性能表现。常见的分页方法有逻辑分页和物理分页。

1. 逻辑分页(假分页/内存分页)

逻辑分页的核心思想是将数据库中的所有数据一次性加载到内存中,形成一个List集合。通过List的索引来实现分页,每次翻页时直接从内存中获取指定范围的数据。

  • 优点:操作简单,翻页速度快。
  • 缺点:初次查询耗时较长,数据量大时可能导致内存溢出。

2. 物理分页(真分页/数据库分页)

物理分页则是通过SQL语句直接从数据库中获取数据片段。常见的实现方法是使用数据库的 LIMIT 或 Oracle 的子查询功能,每次查询指定的条数。

  • 优点:无需内存中加载大数据,避免内存溢出的问题。
  • 缺点:每次翻页需要发起数据库查询,性能较慢。

分页查询原理

在实际应用中,分页需要根据用户需求动态获取数据。以下是常用的分页查询方法:

1. 获取结果总数

使用 COUNT() 函数查询符合条件的记录总数,用于确定总页数。

SELECT COUNT(id) FROM 表名 [WHERE 条件];

2. 分页查询

使用 LIMIT 语句从数据库中获取指定范围的数据,并结合 COUNT() 获取总数,计算分页参数。

SELECT COUNT(id) FROM 表名 [WHERE 条件] LIMIT beginIndex, pageSize;
  • beginIndex:从0开始,表示从哪一条数据开始截取。
  • pageSize:每次获取的数据条数。

结果数据的封装

为了方便前后台数据处理,通常会封装一个分页结果对象。以下是一个常见的封装类:

public class PageResult {    private List listData;  // 分页查询结果数据    private Integer totalCount;  // 结果总条数    private Integer currentPage;  // 当前页    private Integer pageSize;  // 每页条数    private Integer beginPage;  // 起始索引    private Integer prevPage;  // 上一页    private Integer nextPage;  // 下一页    private Integer totalPage;  // 总页数}

前后台实现

后台实现

  • DAO层新增接口

    • 接口定义:PageResult query(Integer currentPage, Integer pageSize),返回分页结果对象。
    • 实现类:根据 currentPage 和 pageSize 调用数据库查询,返回 PageResult 对象。
  • 业务逻辑处理

    • 计算 beginIndex:beginIndex = (currentPage - 1) * pageSize
    • 计算总页数:totalPage = (totalCount % pageSize == 0) ? (totalCount / pageSize) : (totalCount / pageSize + 1)
    • 确保 currentPage 不超出范围。
  • 前台实现

  • 界面设计

    • 添加分页链接,如首页、上页、下页、末页。
    • 显示当前页信息和总数据量。
  • 数据传递

    • 使用 Servlet 启动器转发传递 PageResult 对象。
    • 在 JSP 中通过 ${} 标签显示数据。
  • 动态参数处理

    • 接收 currentPage 和 pageSize 请求参数。
    • 调用业务方法获取分页数据并显示。
  • 分页查询的思路

    后台实现步骤

  • DAO层新增分页查询方法

    • 返回 PageResult 对象,包含分页数据和总数。
    • 确保数据库查询高效。
  • 测试新增方法

    • 编写测试用例,验证分页功能正常。
  • 前台实现步骤

  • 界面设计

    • 增加分页链接和显示当前页信息。
    • 确保界面美观且功能完善。
  • 数据传递

    • 确保数据从 Servlet 到 JSP 正确传递。
    • 检查数据传递是否完整。
  • 动态参数处理

    • 确保 currentPage 和 pageSize 的合法性。
    • 调用业务方法获取分页数据。
  • 总结

    分页设计通过合理控制数据加载量,提升用户体验和系统性能。选择合适的分页方式(逻辑分页或物理分页)取决于具体需求。通过封装 PageResult 对象和前后台协同实现,确保分页功能的灵活性和可维护性。

    转载地址:http://kedfk.baihongyu.com/

    你可能感兴趣的文章
    MySQL系列之数据类型(Date&Time)
    查看>>
    Mysql系列之锁机制
    查看>>
    Mysql系列九:使用zookeeper管理远程Mycat配置文件、Mycat监控、Mycat数据迁移(扩容)...
    查看>>
    MySql系列:[4200][1140]In aggregated query without GROUP BY, expression #2 of SELECT list contains nona
    查看>>
    MySQL索引
    查看>>
    Mysql索引
    查看>>
    mysql索引
    查看>>
    mysql索引
    查看>>
    Mysql索引,索引的优化,如何避免索引失效案例
    查看>>
    Mysql索引、命令重点介绍
    查看>>
    mysql索引、索引优化(这一篇包括所有)
    查看>>
    Mysql索引一篇就够了
    查看>>
    MySQL索引一篇带你彻底搞懂(一次讲清实现原理加优化实战,面试必问)
    查看>>
    MySQL索引下沉:提升查询性能的隐藏秘
    查看>>
    MySql索引为什么使用B+树
    查看>>
    MySQL索引为什么是B+树
    查看>>
    WARNING!VisualDDK wizard was unable to find any DDK/WDK installed on your system.
    查看>>
    MySQL索引介绍及百万数据SQL优化实践总结
    查看>>
    Mysql索引优化
    查看>>
    MySQl索引创建
    查看>>