pagehelper 分页写法

依赖

复制代码
     <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.4.3</version>
        </dependency>

工具类

复制代码
import com.first.pet.vo.BasePageReq;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageInfo;

import java.util.ArrayList;
import java.util.List;
import java.util.function.Function;

/**
 * @author yangquan
 * @since 2023-09-18
 */
public class PageInfoUtils {

    /**
     * pageInfo泛型转换
     */
    public static <T, R> PageInfo<R> convert(PageInfo<T> pageInfo, Function<T, R> function) {
        Page<T> page = (Page<T>) pageInfo.getList();
        PageInfo<R> newPageInfo = page.toPageInfo(function::apply);
        newPageInfo.setTotal(page.getTotal());
        return newPageInfo;
    }

    /**
     * pageInfo泛型转换
     */
    public static <T> PageInfo<T> of(Integer num, Integer size, Long total, List<T> list) {
        PageInfo<T> result = new PageInfo<>();
        result.setPageNum(num);
        result.setPageSize(size);
        result.setTotal(total);
        result.setList(list);
        return result;
    }

    public static <T> PageInfo<T> emptyPageInfo(BasePageReq basePageReq) {
        PageInfo<T> pageInfo = new PageInfo<>();
        pageInfo.setPageNum(basePageReq.getPageNum());
        pageInfo.setPageSize(basePageReq.getPageSize());
        pageInfo.setList(new ArrayList<>());
        return pageInfo;
    }

}

分页参数

复制代码
/**
 * 资源信息分页查询DTO
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class BasePageReq implements Serializable {

    @ApiModelProperty("第几页")
    @Min(value = 1, message = "分页参数错误,页码不应小于1条")
    private Integer pageNum;

    @ApiModelProperty("每页显示几条")
    @Min(value = 1, message = "分页参数错误,条数不应小于1条")
    @Max(value = 1000, message = "分页参数错误,条数应小于1000条")
    private Integer pageSize;
}



/**
 * @author yangquan
 * @since 2023-09-17
 */
@ApiModel("管理员信息查询入参")
@Data
public class PlatformManagerUserReq extends BasePageReq {
    /**
     * 手机号
     */
    @ApiModelProperty("手机号")
    private String phone;

    /**
     * 角色Id
     */
    @ApiModelProperty("角色Id")
    private Integer roleId;

    public PlatformManagerUserReq(Integer pageNum, Integer size, String phone, Integer roleId) {
        super(pageNum, size);
        this.phone = phone;
        this.roleId = roleId;
    }
}

写法1、

复制代码
    @Override
    public PageInfo<PlatformRole> getPlatformRoleList(PlatformRoleReq platformRoleReq) {
    //第一种写法   使用mybatis-plus的写法
        QueryWrapper<PlatformRole> roleRespWrapper = new QueryWrapper<>();
        roleRespWrapper.eq(StringUtils.isNotBlank(platformRoleReq.getRoleName()), "role_name", platformRoleReq.getRoleName());
        //设置当前页以及每页记录数
        PageInfo<PlatformRole> pageInfo = PageHelper.startPage(platformRoleReq.getPageNum(), platformRoleReq.getSize()).doSelectPageInfo(() ->
                platformRoleMapper.selectList(roleRespWrapper));
                第二种写法  使用自己写sql的方式
//        PageInfo<PlatformRole> pageInfo = PageHelper.startPage(platformRoleReq.getPageNum(), platformRoleReq.getSize()).doSelectPageInfo(() ->
//                platformRoleMapper.selectbyRoleId(platformRoleReq));
        if (pageInfo.getTotal() == 0) {
            return PageInfoUtils.emptyPageInfo(platformRoleReq.getPageNum(), platformRoleReq.getSize());
        }
        return pageInfo;
    }

写法2、

复制代码
    @Override
    public PageInfo<PlatformManagerUserResp> managerUserList(PlatformManagerUserReq platformManagerUserReq) {
        if (StringUtils.isNotBlank(platformManagerUserReq.getPhone())) {
            platformManagerUserReq.setPhone(EncryptUtils.encryptPhoneIdCard(platformManagerUserReq.getPhone()));
        }
        //设置当前页以及每页记录数
        PageInfo<PlatformManagerUserResp> pageInfo = PageHelper.startPage(platformManagerUserReq.getPageNum(), platformManagerUserReq.getPageSize()).doSelectPageInfo(() ->
                platformManagerUserMapper.managerUserList(platformManagerUserReq));
        if (pageInfo.getTotal() == 0) {
            return PageInfoUtils.emptyPageInfo(platformManagerUserReq);
        }
        return PageInfoUtils.convert(pageInfo, this::platformManagerUserResp);
    }


    /**
     * 数据转换
     *
     * @param platformManagerUserResp
     * @return
     */
    private PlatformManagerUserResp platformManagerUserResp(PlatformManagerUserResp platformManagerUserResp) {
        platformManagerUserResp.setPhone(EncryptUtils.decryptPhoneIdCard(platformManagerUserResp.getPhone()));
        return platformManagerUserResp;
    }

这辈子坚持与不坚持都不可怕,怕的是独自走在坚持的道路上。。。

相关推荐
我好喜欢你~25 分钟前
C#---StopWatch类
开发语言·c#
桦说编程2 小时前
Java 中如何创建不可变类型
java·后端·函数式编程
lifallen2 小时前
Java Stream sort算子实现:SortedOps
java·开发语言
IT毕设实战小研2 小时前
基于Spring Boot 4s店车辆管理系统 租车管理系统 停车位管理系统 智慧车辆管理系统
java·开发语言·spring boot·后端·spring·毕业设计·课程设计
没有bug.的程序员3 小时前
JVM 总览与运行原理:深入Java虚拟机的核心引擎
java·jvm·python·虚拟机
甄超锋3 小时前
Java ArrayList的介绍及用法
java·windows·spring boot·python·spring·spring cloud·tomcat
cui__OaO3 小时前
Linux软件编程--线程
linux·开发语言·线程·互斥锁·死锁·信号量·嵌入式学习
阿华的代码王国3 小时前
【Android】RecyclerView复用CheckBox的异常状态
android·xml·java·前端·后端
Zyy~3 小时前
《设计模式》装饰模式
java·设计模式
A尘埃3 小时前
企业级Java项目和大模型结合场景(智能客服系统:电商、金融、政务、企业)
java·金融·政务·智能客服系统