java pageinfo page工具类
时间: 2025-05-22 17:17:20 浏览: 13
### Java 中 `PageInfo` 工具类的分页实现
在 Java 应用程序中,为了处理大量数据并提高用户体验,通常会采用分页技术。`PageInfo` 是一个常用的工具类,用于封装分页查询的结果。
#### 使用 MyBatis 分页插件配合 `PageInfo`
当使用 MyBatis 的分页插件时,可以通过调用 `PageInfo` 类的方法来获取详细的分页信息:
```java
// 查询用户列表,并指定第几页以及每页显示多少条记录
List<User> userList = userMapper.selectUserList(pageNum, pageSize);
// 创建 PageInfo 对象,传入查询结果
PageInfo<User> pageInfo = new PageInfo<>(userList);
// 获取总页数
int totalPage = pageInfo.getPages();
// 当前页面编号
int currentPage = pageInfo.getPageNum();
```
上述代码展示了如何利用 MyBatis 插件完成一次简单的分页操作[^1]。
#### 自定义 `PageInfoUtil` 工具类简化分页逻辑
对于希望进一步抽象化分页过程的应用场景,可以创建自定义工具类如 `PageInfoUtil` 来减少重复编码工作量:
```java
@Component
public class PageInfoUtil {
/**
* 将给定的数据集合转换成带有分页信息的对象。
*
* @param data 数据源
* @param pageNumber 页面号
* @param pageSize 每页大小
*/
public static <T> PageInfo<T> getData(List<T> data, int pageNumber, int pageSize) {
PageHelper.startPage(pageNumber, pageSize);
return new PageInfo<>(data);
}
}
```
此段代码提供了一个静态方法 `getData()` ,它接受原始数据集作为参数之一,在内部启动 MyBatis 的分页拦截器之后返回一个新的 `PageInfo` 实例[^2]。
#### 定义通用的 `PageInfo` 类支持序列化特性
考虑到跨层传输的需求,有时还需要让 `PageInfo` 支持序列化功能以便于在网络间传递对象实例:
```java
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
public class PageInfo<T> implements Serializable {
private static final long serialVersionUID = -3679428352166664373L;
/** 总记录数 */
private Long total;
/** 结果集 */
private List<T> list;
public PageInfo(Long total, List<T> list) {
this.total = total;
this.list = list;
}
// 可能还有其他属性和辅助函数...
}
```
这段代码片段展示了一种典型的 Lombok 注解风格下的泛型 `PageInfo` 类设计模式,其中包含了基本的成员变量声明及其构造方式[^3]。
阅读全文
相关推荐


















