|
|
|
@ -0,0 +1,51 @@
|
|
|
|
|
/*
|
|
|
|
|
* Copyright (c) 2018-2999 广州市蓝海创新科技有限公司 All rights reserved.
|
|
|
|
|
*
|
|
|
|
|
* https://www.mall4j.com/
|
|
|
|
|
*
|
|
|
|
|
* 未经允许,不可做商业用途!
|
|
|
|
|
*
|
|
|
|
|
* 版权所有,侵权必究!
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
package com.yami.shop.common.util;
|
|
|
|
|
|
|
|
|
|
// 导入Hutool工具库中用于分页相关操作的工具类,这里主要用于将页码、每页数量等信息转换为数据库查询中起始位置和结束位置的相关操作
|
|
|
|
|
import cn.hutool.core.util.PageUtil;
|
|
|
|
|
// 导入MyBatis Plus框架中用于表示分页信息的核心类,包含了当前页码、每页显示数量等分页相关的属性和方法
|
|
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
|
|
// 引入Lombok的Data注解,通过该注解,编译器会自动帮我们生成类的常用方法,比如各属性的Getter、Setter方法,以及toString、equals、hashCode方法等,简化代码编写
|
|
|
|
|
import lombok.Data;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* PageAdapter类主要起到了一个适配的作用,用于将MyBatis Plus框架中的分页对象(Page)的相关信息,
|
|
|
|
|
* 转换为适用于其他分页逻辑或者数据库查询中分页参数的表示形式,
|
|
|
|
|
* 具体是将基于页码和每页数量的分页信息转换为起始位置(begin)和每页数量(size)的形式,方便后续在数据库查询等场景中使用,
|
|
|
|
|
* 借助Hutool工具库的分页相关功能来实现这种转换操作。
|
|
|
|
|
*
|
|
|
|
|
* @author lh
|
|
|
|
|
*/
|
|
|
|
|
@Data
|
|
|
|
|
public class PageAdapter {
|
|
|
|
|
|
|
|
|
|
// 用于表示分页查询时的起始位置(通常对应数据库查询中的偏移量,从第几条记录开始查询)
|
|
|
|
|
private int begin;
|
|
|
|
|
|
|
|
|
|
// 用于表示分页查询时每页的记录数量,即每页显示多少条数据
|
|
|
|
|
private int size;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 构造方法,接收一个MyBatis Plus框架中的Page对象作为参数,
|
|
|
|
|
* 通过调用Hutool工具库的PageUtil工具类的transToStartEnd方法,
|
|
|
|
|
* 将Page对象中的当前页码和每页数量信息转换为对应的起始位置和每页数量信息,分别赋值给类中的begin和size属性,完成适配转换操作。
|
|
|
|
|
*
|
|
|
|
|
* @param page MyBatis Plus框架中的Page对象,包含了当前页码、每页显示数量等分页相关的属性信息,通过这些信息来计算出合适的begin和size值
|
|
|
|
|
*/
|
|
|
|
|
public PageAdapter(Page page) {
|
|
|
|
|
// 调用Hutool的PageUtil工具类的transToStartEnd方法,将当前页码(需要减1,因为数据库查询中页码通常从0开始计数)和每页数量转换为起始位置和结束位置的数组,这里取数组的第一个元素作为起始位置(begin)
|
|
|
|
|
int[] startEnd = PageUtil.transToStartEnd((int) page.getCurrent() - 1, (int) page.getSize());
|
|
|
|
|
this.begin = startEnd[0];
|
|
|
|
|
// 将传入的Page对象中的每页数量赋值给size属性,作为每页的记录数量
|
|
|
|
|
this.size = (int) page.getSize();
|
|
|
|
|
}
|
|
|
|
|
}
|