分页

简介: /

1 自带rowbound分页
先将所有的结果集查询出来ResultSet,再进行内存分页(limit)

2 第三方插件pagehelper
会将一个查询SQL变成两部分执行,假设SQL是:select name from user;
①自动识别数据库类型,添加对应的分页关键字,如MySQL则limit,Oracle则rownum,DB2则fetch,查找出上面SQL的结果
②查找出上面结果,查询结果的总条数count
3 SQL分页
依赖limit进行实现,或者rownum等自身的SQL实现
4 数组分页

简而言之:查全部再subList

首先在dao层,创建StudentMapper接口,用于对数据库的操作。在接口中定义通过数组分页的查询方法,如下所示:
方法很简单,就是获取所有的数据,通过list接收后进行分页操作。创建StudentMapper.xml文件,编写查询的sql语句:
可以看出再编写sql语句的时候,我们并没有作任何分页的相关操作。这里是查询到所有的学生信息。接下来在service层获取数据并且进行分页实现:
定义IStuService接口,并且定义分页方法:

1

List<Student> queryStudentsByArray(int currPage, int pageSize);

通过接收currPage参数表示显示第几页的数据,pageSize表示每页显示的数据条数。
创建IStuService接口实现类StuServiceIml对方法实现,对获取到的数组通过currPage和pageSize进行分页:

1

2

3

4

5

6

7

8

@Override

public List<Student> queryStudentsByArray(int currPage, int pageSize) {

List<Student> students = studentMapper.queryStudentsByArray();

//  从第几条数据开始        

int firstIndex = (currPage - 1) * pageSize;

//  到第几条数据结束        

int lastIndex = currPage * pageSize; return students.subList(firstIndex, lastIndex);

}

通过subList方法,获取到两个索引间的所有数据。
最后在controller中创建测试方法:

1

2

3

4

5

6

@ResponseBody    

@RequestMapping("/student/array/{currPage}/{pageSize}")

public List<Student> getStudentByArray(@PathVariable("currPage") int currPage, @PathVariable("pageSize") int pageSize) {

List<Student> student = StuServiceIml.queryStudentsByArray(currPage, pageSize);

return student;

}

通过用户传入的currPage和pageSize获取指定数据。
5 拦截器分页
自定义拦截器实现了拦截所有以ByPage【或自己约束的都是可以的】结尾的查询语句,并且利用获取到的分页相关参数统一在sql语句后面加上limit分页的相关语句。
6 总结
逻辑分页:即内存分页,就是mybatis自带的rowbounds,内存开销大,数据量小效率比物理分页快,但大数据量,易内存溢出
物理分页:上述2345,小数据量效率比逻辑分页慢,但是大数据量推荐用物理分页。
物理分页总是优先于逻辑分页。

相关文章
|
7月前
|
SQL 机器学习/深度学习 自然语言处理
运营日报自动化:智能问数如何实现“开口即得”?
截至2026年4月初,智能问数技术在运营日报自动化场景中已形成多元实现路径。部分方案依赖预置宽表与指标层,通过自然语言匹配固定查询模板,适合结构稳定、问题明确的“开卷考试”式场景;另一些则基于动态Text2SQL或语义本体建模,试图应对更开放的跨域提问,但对数据治理和语义一致性要求较高。不同路线在前期建设成本、后期扩展性及准确率上各有权衡:前者上线快、维护简单,后者泛化能力强但需持续投入知识治理。实践中,企业往往根据自身数据成熟度与业务复杂度选择适配方案,并非单一技术可通解所有“开口即得”需求。
|
6月前
|
算法 数据安全/隐私保护 C++
从RPA到智能办公Agent:财务对账场景的能力升级与避坑指南
本文以财务对账真实场景切入,对比RPA与智能Agent的本质差异:RPA仅按死规则执行,快但僵化;智能Agent则具备合并匹配、模糊识别、自学习与差异推断能力,将对账从8小时缩至40分钟。重点揭示升级路径与五大避坑要点,强调“人机协同”而非替代。(239字)
616 0
|
11月前
|
canal Java 关系型数据库
|
存储 缓存 人工智能
重构高端存储新范式-RDMA+NVMe-oF
`sendfile` 是 Linux 系统中用于高效传输数据的系统调用,支持文件到网络套接字的零拷贝传输,减少 CPU 和内存的开销。它通过建立两个文件描述符之间的传输通道,避免了传统 `read/write` 或 `mmap/write` 方式中的多次数据拷贝和上下文切换。文章探讨了 `sendfile` 的实现原理、性能优势及其在不同存储设备(如 SSD 和 NVMe)下的应用挑战,同时分析了 DMA 技术在数据传输中的作用及限制。此外,还介绍了 NVMe 和 RDMA 等新技术对网络存储架构的影响,展示了现代高性能存储与网络的深度融合趋势。
589 0
|
人工智能 算法 调度
端侧宠物识别+拍摄控制智能化:解决设备识别频次识别率双低问题
随着宠物成为家庭重要成员,其影像创作需求激增。传统相机“人脸优先”逻辑难以应对宠物拍摄的复杂场景,如毛发模糊、动态多变、光照反差大等。本文基于端侧AI与影像工程经验,系统梳理宠物识别驱动的对焦曝光重构技术,结合算法与产业实践,构建从检测到参数调度的完整解决方案,推动拍摄技术向“宠物优先”转型。
673 0
|
数据可视化 大数据 定位技术
GIS:开源webgl大数据地图类库整理
GIS:开源webgl大数据地图类库整理
1237 0
|
安全 vr&ar 计算机视觉
AR智能眼镜在警务安防的人脸识别场景,有哪些应用和优势?
AR智能眼镜结合人脸识别技术,为安防领域带来高效精准的解决方案。通过实时采集与分析人脸信息,快速识别重点人员并即时报警,广泛应用于机场、车站、大型活动等场景,显著提升安全防控能力。
AR智能眼镜在警务安防的人脸识别场景,有哪些应用和优势?
|
人工智能 安全 大数据
阿里云社区博客:开发者与企业的云端技术交流平台
阿里云社区是阿里云官方打造的技术交流平台,汇聚云计算、大数据、人工智能等领域专家与开发者。社区提供技术资源共享、专家互动、实战经验分享及最新技术动态等核心价值。主要板块包括技术文章、问答社区、活动大赛和产品文档,用户可通过注册账号、完善资料参与互动,享受成长体系与特色功能。无论是初学者还是资深专家,都能在此找到成长空间,探索云计算的无限可能。关注官方公众号,获取更多技术干货与活动资讯!
726 7
|
Python
利用Python判断一个数是否在列表中
利用Python判断一个数是否在列表中
1600 0
|
Kubernetes 监控 Cloud Native
快速部署YuniKorn开启全能管理与调度器
本文介绍了YuniKorn的基本信息,并通过阿里云计算巢完成了YuniKorn的快速部署,使用者不需要自己下载代码,不需要自己安装复杂的依赖,不需要了解底层技术,只需要在控制台图形界面点击几下鼠标就可以快速部署并启动YuniKorn,非技术同学也能轻松搞定。

热门文章

最新文章