当前位置:网站首页>开源一夏 | 查询分页不只有limit,这四种分页方法值得掌握
开源一夏 | 查询分页不只有limit,这四种分页方法值得掌握
2022-08-04 09:06:00 【InfoQ】
- 由于前端在页面显示数据时,希望每个页面只显示指定条数的数据,由于数据量较大,不能够一次性展示,所以就通过限制每个页面固定的条数进行展示。
- 如果数据量较大的话,页面也不一定加载完全,所以造成效率比较差,所以解决方案分页查询就可以很好的解决这个问题了,通过把庞大的数据按照固定的数目显示,在通过上一页或下一页的按钮显示其它的数据。
limit的传统方式
- 如果是一个参数,如limit 10,则表示默认从开始位置开始获取10条数据。
- 如果是两个参数,第一个参数指定的是返回行数的开始位置,第二个参数指定的是返回记录行的数目。Eg: select * from user limit 0,10表示从第0个位置开始获取10条数据。
PageHelper插件的方式
- 引入依赖
<!-- pagehelper -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>${pagehelper.version}</version>
</dependency>
- 使用代码注意
PageHelper.startPage(pageNo, pageSize)
PageResult<List<Employee>> result = new PageResult<>();
//就是下边的这个地方,使用了 pageNo是offset就是开始位置的偏移量,第二个参数pageSize是查询返回的数据的条数
PageHelper.startPage(pageNo, pageSize);
try {
List<Employee> employeeList = employeeService.findAll();
PageInfo<Employee> pageInfo = new PageInfo<>(employeeList);
log.info(String.valueOf(employeeList));
result.setTotal(pageInfo.getTotal());
result.setPages(pageInfo.getPages());
result.setCurrent(pageInfo.getPageNum());
result.setSize(pageInfo.getPageSize());
result.setResult(employeeList);
result.success("查询成功!");
}
- 查询结果
自定义Interceptor的方式
RowsBounds方式
service层:
RowBounds rowbounds = new RowBounds(offset, Integer.parseInt(pageSize));
//用户数据集合
List<Map<String, Object>> userList = userDao.queryUserList(rowbounds);
Dao层:
public List<Map<String, Object>> queryUserList(RowBounds rowbounds);
mapperxml层:
<!-- 查询用户列表 -->
<select id="queryUserList" resultType="java.util.Map">
select * from user
</select>
总结
边栏推荐
- MindSpore:model.train中的dataset_sink_mode该如何理解?
- 优炫数据库只有数据文件如何恢复
- 继承和static关键字
- 反序列化漏洞
- [Punctuality Atom STM32 Serial] Chapter 2 STM32 Introduction Excerpted from [Punctual Atom] MiniPro STM32H750 Development Guide_V1.1
- 关于Oracle RAC 11g重建磁盘组的问题
- 发现WRH几个表被锁了,怎么办?
- 【论文笔记】Understanding Long Programming Languages with Structure-Aware Sparse Attention
- 函数防抖与函数节流
- Unity3D data encryption
猜你喜欢
随机推荐
交换机链路聚合详解【华为eNSP】
RL学习笔记(一)
leetcode二叉树系列(二)
Linux Redis cache avalanche, breakdown, penetration
请你谈谈网站是如何进行访问的?【web领域面试题】
云函数实现网站自动化签到配置详解【Web函数/Nodejs/cookie】
Cloud function to achieve automatic website check-in configuration details [Web function/Nodejs/cookie]
Detailed explanation of MSTP protocol configuration on Layer 3 switches [Huawei eNSP experiment]
B站回应HR称“核心用户都是Loser”、求职者是“白嫖党”:已被劝退
ansible部署脚本--亲测可用无坑
Wang Shuang's Assembly Language Chapter 4: The First Program
94后字节P7晒出工资单:狠补了这个,真不错...
Libpq 是否支持读写分离配置
leetcode动态规划经典例题——53.最大子数组和
字符串与正则表达式(C#)
学会 Arthas,让你 3 年经验掌握 5 年功力
微信消息从发送到接收,经历了什么?如何防止丢包
spark算子讲解
一道[CSCCTF 2019 Qual]FlaskLight的详解再遇SSTI
[Punctuality Atom STM32 Serial] Chapter 2 STM32 Introduction Excerpted from [Punctual Atom] MiniPro STM32H750 Development Guide_V1.1










