服务器测评网
我们一直在努力

java的分页类怎么写

分页类的核心属性设计

Java分页类的核心在于封装分页所需的基础信息,通常包含以下属性:当前页码(currentPage)、每页显示条数(pageSize)、总记录数(total)、当前页数据列表(list),还可扩展计算属性如总页数(totalPages)、偏移量(offset)等,以简化业务逻辑调用,这些属性需通过私有化封装,配合getter/setter方法控制访问,确保数据安全性,currentPage和pageSize应设置默认值(如1和10),避免前端未传参时出现异常。

java的分页类怎么写

分页逻辑的计算方法

分页类的关键在于逻辑计算,需处理多种边界情况:

  1. 总页数计算:通过Math.ceil((double) total / pageSize)实现,确保总记录数不能整除时向上取整。
  2. 偏移量计算:用于数据库查询的起始位置,公式为(currentPage - 1) * pageSize,需注意currentPage小于1时自动修正为1。
  3. 页码合法性校验:当currentPage超过总页数时,应自动调整为最后一页(如totalPages为0时设为1)。
  4. 分页状态判断:提供hasNextPage()(是否有下一页)和hasPreviousPage()(是否有上一页)等方法,方便前端控制按钮状态。

分页类的封装与使用示例

以下是一个简洁的分页类封装示例(以泛型支持不同数据类型):

java的分页类怎么写

import java.util.List;  
public class Page<T> {  
    private int currentPage = 1;  
    private int pageSize = 10;  
    private int total;  
    private List<T> list;  
    public Page(int currentPage, int pageSize, int total, List<T> list) {  
        this.currentPage = Math.max(1, currentPage);  
        this.pageSize = pageSize > 0 ? pageSize : 10;  
        this.total = total;  
        this.list = list;  
    }  
    public int getTotalPages() {  
        return total == 0 ? 1 : (int) Math.ceil((double) total / pageSize);  
    }  
    public int getOffset() {  
        return (currentPage - 1) * pageSize;  
    }  
    public boolean hasNextPage() {  
        return currentPage < getTotalPages();  
    }  
    // 省略其他getter/setter  
}  

使用场景:在Service层查询数据时,先计算偏移量和条数,查询后封装分页对象返回。

public Page<User> listUsers(int currentPage, int pageSize) {  
    int offset = (currentPage - 1) * pageSize;  
    List<User> users = userMapper.selectUsers(offset, pageSize);  
    int total = userMapper.countUsers();  
    return new Page<>(currentPage, pageSize, total, users);  
}  

分页功能的注意事项

  1. 参数校验:需对currentPage和pageSize进行合法性校验,防止负数或0导致异常。
  2. 数据库优化:避免大偏移量分页(如LIMIT 100000, 10),可通过WHERE id > last_id LIMIT pageSize优化,或使用游标分页。
  3. 线程安全:分页类通常作为数据传输对象(DTO),无需考虑线程安全问题,但若涉及缓存,需注意并发读写。
  4. 返回结构:RESTful接口返回分页数据时,建议统一格式,如{ "code": 200, "data": { "list": [...], "total": 100, "currentPage": 1 } },便于前端解析。

通过合理设计分页类,可有效提升代码复用性,简化业务逻辑,同时保障分页功能的健壮性和可维护性。

java的分页类怎么写

赞(0)
未经允许不得转载:好主机测评网 » java的分页类怎么写