SpringBoot 入门:06 – 数据分页

在所有增删改查操作里,查找是最常用到的数据库操作,而其中列表查询查得最多,对于列表查询就绕不开数据分页,使用 MyBatis-Plus 为我们封装好的分页插件即可快速实现这个功能。

MyBatis-Plus 配置

在 01 篇中我们已经配置了 MyBatisPlusConfig 类,只需往其中加入分页拦截器即可:

@Bean
public PaginationInterceptor paginationInterceptor() {
    return new PaginationInterceptor();
}
复制代码

列表返回类

对于分页类型的接口,我们的返回格式如下:

{
  "code": 200,
  "msg": "ok",
  "data": {  
    "list": [],
    "page": 1,
    "limit": 5,
    "total": 10,
    "pages": 2,
    "has_more": true
  }
}
复制代码

所以需要定制一个分页返回的类:

package com.foxescap.wxbox.common;

import com.baomidou.mybatisplus.core.metadata.IPage;
import lombok.Data;

import java.util.List;

/**
 * @author xfly
 * @param <T>
 */
@Data
public class ApiResponsePage<T> {

    private List<T> list;

    private Long page;

    private Long limit;

    private Long total;

    private Long pages;

    private Boolean hasMore;

    /**
     * IPage 转换成本对象
     * @param iPage 分页实例
     * @return 返回
     */
    public ApiResponsePage<T> convert(IPage<T> iPage) {
        this.list = iPage.getRecords();
        this.page = iPage.getCurrent();
        this.limit = iPage.getSize();

        if (iPage.isSearchCount()) {
            this.total = iPage.getTotal();
            this.pages = iPage.getPages();
            this.hasMore = this.pages > this.page;
        } else {
            this.hasMore = this.list.size() >= this.limit;
        }

        return this;
    }
}
复制代码

然后我们的 Service 层增加一个列表查询方法:

public ApiResponsePage<UserDto> list(String username, Integer page, Integer limit) {
    var query = lambdaQuery();
    if (username.length() > 0) {
        query = query.likeRight(User::getUsername, username);
    }
    var iPage = query.orderByDesc(User::getId)
        .page(new Page<User>(page, limit).setSearchCount(false))
        .convert(e -> modelMapper.map(e, UserDto.class));
    return new ApiResponsePage<UserDto>().convert(iPage);
}
复制代码

原文 

https://juejin.im/post/5f1050c26fb9a07e7a53e5ca

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » SpringBoot 入门:06 – 数据分页

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址