page 怎么把list 分页_Java Spring Boot 集成 PageHelper 实现优雅分页

本文介绍了如何在Java Spring Boot项目中利用PageHelper实现分页功能,包括pom.xml的依赖引入,application.yml的配置,Controller API的设计与实现,Service层的处理,以及如何通过封装分页数据来提高代码复用性。
摘要由CSDN通过智能技术生成

2e7e5b765ddc763ed22a76253e320caa.png

一、pom.xml 文件中引入依赖

                <!--pagehelper-->
		<dependency>
			<groupId>com.github.pagehelper</groupId>
			<artifactId>pagehelper-spring-boot-starter</artifactId>
			<version>1.2.3</version>
		</dependency>

二、application.yml 文件中做如下配置

# 分页插件配置
pagehelper:
  helperDialect: mysql
  supportMethodsArguments: true

三、Controller API 层

@ApiOperation(value = "查询admin列表", notes = "查询admin列表", httpMethod = "POST")
    @PostMapping("/getAdminList")
    public GraceJSONResult getAdminList(
            @ApiParam(name = "page", value = "查询第几页", required = false)
            @RequestParam Integer page,
            @ApiParam(name = "pageSize", value = "每页显示多少条记录", required = false)
            @RequestParam Integer pageSize
    );

四、Controller API 实现层

public static final Integer COMMON_START_PAGE = 1;
public static final Integer COMMON_PAGE_SIZE = 10;

@Override
    public GraceJSONResult getAdminList(Integer page, Integer pageSize) {

        if (page == null) {
            page = COMMON_START_PAGE;
        }
        if (pageSize == null) {
            pageSize = COMMON_PAGE_SIZE;
        }

        PagedGridResult result = adminUserService.queryAdminList(page, pageSize);

        return GraceJSONResult.ok(result);
    }

COMMON_START_PAGE 为 1,COMMON_PAGE_SIZE为 10,避免魔法值,便于修改维护。

五、Service 层 与 实现

/**
     * 分页查询admin列表
     */
    public PagedGridResult queryAdminList(Integer page, Integer pageSize);

@Override
    public PagedGridResult queryAdminList(Integer page, Integer pageSize) {

        Example adminExample = new Example(AdminUser.class);
        adminExample.orderBy("createdTime").desc();

        // 实现分页逻辑
        PageHelper.startPage(page, pageSize);
        List<AdminUser> adminUserList = adminUserMapper.selectByExample(adminExample);

        return setterPagedGrid(adminUserList, page);
    }

六、封装分页数据

public PagedGridResult setterPagedGrid(List<?> list,
                                           Integer page) {

        PageInfo<?> pageList = new PageInfo<>(list);
        PagedGridResult gridResult = new PagedGridResult();
        gridResult.setRows(list);
        gridResult.setPage(page);
        gridResult.setRecords(pageList.getTotal());
        gridResult.setTotal(pageList.getPages());
        return gridResult;
    }

上述封装分页数据的方法,如在多个 Service 层中都有调用,可抽取一个BaseService 类作为所有 Service 层的基类,让其余 Service 层继承此基类,令代码更精炼、简洁,实现代码复用的原则。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值