千家信息网

Java项目开发中怎么实现分页

发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,这篇"Java项目开发中怎么实现分页"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"J
千家信息网最后更新 2025年01月20日Java项目开发中怎么实现分页

这篇"Java项目开发中怎么实现分页"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"Java项目开发中怎么实现分页"文章吧。

前言

Java项目开发中经常要用到分页功能,现在普遍使用SpringBoot进行快速开发,而数据层主要整合SpringDataJPA和MyBatis两种框架,这两种框架都提供了相应的分页工具,使用方式也很简单,可本人在工作中除此以外还用到第三种更方便灵活的分页方式,在这里一同分享给大家。

使用

主要分为SpringDataJPA分页、MyBatis分页、Hutools工具类分页几个部分

1、SpringDataJPA分页

1)、引入依赖

    org.springframework.boot    spring-boot-starter-data-jpa

2)、Service中编写分页服务

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

/** * 根据doctorId查询全部关注列表【分页】 * * @param doctorId 医生id * @return 结果集 */public Map findAllListByDoctorId(Long doctorId, Integer pageIndex, Integer pageSize) {    Pageable pageable = PageRequest.of(pageIndex - 1, pageSize); // 分页    Page pageResult = followRepository.findByDoctorIdOrderByCreatedAtDesc(doctorId, pageable);    List dtoList = followMapper.toDto(pageResult.getContent());    if (!CollectionUtils.isEmpty(dtoList)) {        // 处理业务逻辑....    }    // 封装分页结果    Map map = new HashMap<>();    map.put("pageIndex", pageIndex.toString()); // 当前页    map.put("pageSize", pageSize.toString()); // 每页条数    map.put("total", Long.toString(pageResult.getTotalElements())); // 总记录数    map.put("pages", Integer.toString(pageResult.getTotalPages())); // 总页数    map.put("list", dtoList); // 数据列表    return map;}

3)、Repository中处理分页

这里就是继承JpaRepository对象,然后传入service中定义好的pageable对象,并且返回Page包装的结果即可。

import com.patient.domain.Follow;import org.springframework.data.domain.Page;import org.springframework.data.domain.Pageable;import org.springframework.data.jpa.repository.JpaRepository; @Repositorypublic interface FollowRepository extends JpaRepository {     Page findByDoctorIdOrderByCreatedAtDesc(Long doctorId, Pageable pageable);}

2、MyBatis分页

1)、引入PageHelper依赖

    com.github.pagehelper    pagehelper-spring-boot-starter

2)、使用PageHelper实现分页

/** * 查询推广人员列表,分页。 * @return 封装的分页结果对象 */public PageResult findPromotePersonList(String hospitalCode,PromotePersonReq promotePersonReq) {    Integer pageIndex = promotePersonReq.getPageIndex();    Integer pageSize = promotePersonReq.getPageSize();    PageHelper.startPage(pageIndex, pageSize); // 每页的大小为pageSize,查询第page页的结果    List list = promotePersonMapper.selectAll();    PageInfo 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;}

3、Hutools工具类分页

1)、引入依赖

这里是可以单独引入hutools部分工具类的,具体参考官网文档,我平时写项目一定会使用这个工具,所以直接引入了所有。

    cn.hutool    hutool-all    5.1.2

2)、分页实现

一般就用到两个工具类,一是PageUtil.totalPage(总记录数, 每页记录数)来计算总页数,二是CollUtil.page(索引, 每页记录数, 数据列表)来返回指定分页结果,注意这里的索引是从1开始的,和SpringDataJPA分页索引从0开始有区别。

/** * 我的订单-待支付[分页] * * @param openid 用户唯一标识 * @return 结果集 */public Map findMyOrderNotPay(String openid, Integer pageIndex, Integer pageSize) {    Map map = new HashMap<>();    // 查询    List orderList = consultOrderRepository.findMyOrderNotPay(openid);    if (CollectionUtils.isEmpty(orderList)) {            map.put("pageIndex", pageIndex.toString()); // 当前页            map.put("pageSize", pageSize.toString()); // 每页条数            map.put("total", "0"); // 总记录数            map.put("pages", "0"); // 总页数            map.put("list", new ArrayList<>()); // 数据列表            return map;    }    List pageList = new ArrayList<>();    int totalSize = 0;    int totalPage = 0;    // 计算总页数    totalSize = orderList.size();        totalPage = PageUtil.totalPage(totalSize, pageSize);    // 分页,索引小于等于总页数,才返回列表.    if (pageIndex <= totalPage) {            // 分页            pageList = CollUtil.page(pageIndex, pageSize, orderVOList);    }    // 返回结果    map.put("pageIndex", Integer.toString(pageIndex)); // 当前页    map.put("pageSize", Integer.toString(pageSize)); // 每页条数    map.put("total", Integer.toString(totalSize)); // 总记录数    map.put("pages", Integer.toString(totalPage)); // 总页数    map.put("list", pageList); // 数据列表    return map;}

以上就是关于"Java项目开发中怎么实现分页"这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注行业资讯频道。

0