博客
关于我
mysql高级查询~分页查询
阅读量:799 次
发布时间: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/

    你可能感兴趣的文章
    Opacity多浏览器透明度兼容处理
    查看>>
    OPC在工控上位机中的应用
    查看>>
    VSCode在终端中使用yarn命令
    查看>>
    OPEN CASCADE Curve Continuity
    查看>>
    Open Graph Protocol(开放内容协议)
    查看>>
    Open vSwitch实验常用命令
    查看>>
    Open WebUI 忘了登入密码怎么办?
    查看>>
    open***负载均衡高可用多种方案实战讲解02(老男孩主讲)
    查看>>
    Open-E DSS V7 应用系列之五 构建软件NAS
    查看>>
    Open-Sora代码详细解读(1):解读DiT结构
    查看>>
    Open-Sora代码详细解读(2):时空3D VAE
    查看>>
    Open-Source Service Discovery
    查看>>
    open-vm-tools-dkms : 依赖: open-vm-tools (>= 2:9.4.0-1280544-5ubuntu3) 但是它将不会被安装
    查看>>
    open3d-Dll缺失,未找到指定模块解决
    查看>>
    openai Midjourney代理服务 gpt大模型第三方api平台汇总 支持国内外各种大模型 持续更新中...
    查看>>
    OpenAll:Android打开组件新姿势【仅供用于学习了解ButterKnife框架基本原理】
    查看>>
    OpenASR 项目使用教程
    查看>>
    Openbox-桌面图标设置
    查看>>
    opencart出现no such file or dictionary
    查看>>
    OpenCV 3.1 imwrite()函数写入异常问题解决方法
    查看>>