Jave实现分页功能

2023-12-27 15:24:14


一、List分页

//  pageNo表示当前页[1-n],pageSize表示每页大小
int total = list.size(); // 总数

// 查询总页数
// 方法一(推荐)
int pageSum = (total -1) / pageSize +1;
// 方法二
int pageSum = total % pageSize == 0 ? total / pageSize : total / pageSize + 1;
// 方法三
int pageSum=(total + pageSize - 1) / pageSize;  

// 获取当前页数据
List<User> subList = list.stream().skip ((pageNo - 1  * pageSize) .limit (pageSize) .collect(Collectors.toList());

二、数据库分页查询

1.mysql数据库

// LIMIT从0开始
// 方法一
LIMIT 位置偏移量, 每页条目数;

// 方法二(位置偏移量 = 0)
LIMIT 每页条目数;

// 方法三
LIMIT 每页条目数 OFFSET 初始偏移量;

2.oracle数据库

-- RN从1开始
-- 方法一
-- 显示RN
SELECT * 
FROM 
  (
    SELECT 
      ROWNUM AS RN, 
      I.* 
    FROM 
      (
        SELECT * FROM DB_ORDER  
      ) I
  )
WHERE RN >= 2 AND RN <= 6

-- 方法二
-- 不显示ROWNUM
SELECT * FROM DB_ORDER WHERE ROWNUM >= 2 AND ROWNUM <= 6

-- 方法三
-- 不显示ROWNUM
-- minus:第一条sql语句获得的结果”减去“第二条sql语句获得的结果
SELECT * FROM DB_ORDER WHERE ROWNUM < 6 MINUS SELECT * FROM DB_ORDER WHERE ROWNUM < 2

三、SpringDataJPA分页

SpringDataJPA分页就是定义Pageable对象来处理分页
PageRequest定义分页参数
Page对象对查询结果进行分页包装,包装后的结果pageResult可以得到总记录数、总页数、分页列表等数据结果

<!-- 引入依赖 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
// 排序
Sort sort = Sort.by(Sort.Direction.DESC, "id");
 
// 分页
// 当前页从0开始
Pageable pageable = PageRequest.of(pageIndex, pageSize, sort);
 
// 分页查询
Page<User> userPage = userDao.findAll(pageable);

// 获取分页信息
page.getTotalElements() // 总条数
page.getTotalPages // 总页数
page.getContent() // 分页list列表

四、MyBatis分页(使用PageHelper实现分页)

PageHelper官网:https://pagehelper.github.io/ 文档中有配置的详细步骤
配置可参考:https://blog.csdn.net/csucsgoat/article/details/116680557

<!-- 引入依赖 -->
<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper-spring-boot-starter</artifactId>
</dependency>
PageHelper.startPage(pageIndex, pageSize); 
List<PromotePerson> list = promotePersonMapper.selectAll();
PageInfo<PromotePerson> pageInfo = new PageInfo<>(list);
PageHelper.clearPage();
// 返回分页结果
PageResult pageResult = new PageResult();
pageResult.setPageIndex(pageIndex);
pageResult.setPageSize(pageSize);
pageResult.setPages(pageInfo.getPages());
pageResult.setTotal((int) pageInfo.getTotal());
pageResult.setList(list);
return pageResult;

五、Hutool工具类分页

Hutool工具链接:https://hutool.cn/

<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>5.1.2</version>
</dependency>
PageUtil.totalPage(int/long totalCount, int pageSize) // 计算总页数
CollUtil.page(int pageNo, int pageSize, List<T> list) // 对指定List分页取值, pageNo从0开始

文章来源:https://blog.csdn.net/xiaoyu_alive/article/details/135127217
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。