介绍
方法 convertToIPage
用于将一个 List
转换为 IPage
,并在方法内部计算总数和总页数。该方法利用了 MyBatis-Plus
框架提供的 IPage
接口,并采用泛型 <T>
,使其能够兼容任意类型的数据。
package com.util;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import java.util.List;
public class PageUtils {
/**
* 转换为分页
*
* @param page 分页参数
* @param list 数据列表
* @param <T> 任意类型
* @return IPage 分页对象
*/
public static <T> IPage<T> convertToIPage(Page<T> page, List<T> list) {
// 获取数据列表总数
int total = list.size();
// 获取当前页码
long current = page.getCurrent();
// 获取每页显示的数据条数
long size = page.getSize();
// 计算总页数
long pages = (long) Math.ceil((double) total / size);
// 计算当前页的起始索引
int startIndex = (int) ((current - 1) * size);
// 计算当前页的结束索引
int endIndex = Math.min((int) (current * size), total);
// 截取对应页的数据
List<T> records = list.subList(startIndex, endIndex);
// 创建 IPage 对象并设置相关属性
IPage<T> iPage = new Page<>();
iPage.setRecords(records);
iPage.setTotal(total);
iPage.setSize(size);
iPage.setCurrent(page.getCurrent());
iPage.setPages(pages);
return iPage;
}
}