0
点赞
收藏
分享

微信扫一扫

java分页模板

朱小落 2023-08-08 阅读 50

Java分页模板

在开发Java Web应用程序中,经常需要实现分页功能来展示大量数据。分页是将数据分割成多个页面,每个页面只显示部分数据,用户可以通过翻页来浏览全部数据。本文将介绍一个常用的Java分页模板,并提供代码示例展示如何使用该模板来实现分页功能。

分页原理

分页功能的实现原理是通过控制数据的查询和展示,将数据分为多个页面进行展示。在实现分页功能时,通常需要以下参数:

  • 当前页码:指示当前显示的页码。
  • 每页显示的数据量:指定每页显示的数据条数。
  • 总数据量:指示总共有多少条数据。

通过计算,可以得出以下信息:

  • 总页数:总数据量除以每页显示的数据量,并向上取整。
  • 当前页的数据起始位置:根据当前页码和每页显示的数据量计算得出。

分页模板

下面是一个通用的Java分页模板,可根据实际需求进行修改:

public class PageUtil<T> {
    private List<T> data; // 数据列表
    private int currentPage; // 当前页码
    private int pageSize; // 每页显示的数据量
    private int totalData; // 总数据量

    public PageUtil(List<T> data, int currentPage, int pageSize, int totalData) {
        this.data = data;
        this.currentPage = currentPage;
        this.pageSize = pageSize;
        this.totalData = totalData;
    }

    public List<T> getData() {
        int startIndex = (currentPage - 1) * pageSize; // 当前页的数据起始位置
        int endIndex = Math.min(startIndex + pageSize, totalData); // 当前页的数据结束位置
        return data.subList(startIndex, endIndex);
    }

    public int getCurrentPage() {
        return currentPage;
    }

    public int getPageSize() {
        return pageSize;
    }

    public int getTotalData() {
        return totalData;
    }

    public int getTotalPages() {
        return (int) Math.ceil((double) totalData / pageSize); // 总页数
    }

    public boolean hasPreviousPage() {
        return currentPage > 1;
    }

    public boolean hasNextPage() {
        return currentPage < getTotalPages();
    }
}

使用示例

下面是一个使用分页模板的示例,假设有一个用户实体类User,我们想要对用户列表进行分页展示:

public class UserService {
    private UserDao userDao;

    public UserService(UserDao userDao) {
        this.userDao = userDao;
    }

    public PageUtil<User> getUsersByPage(int currentPage, int pageSize) {
        List<User> userList = userDao.getAllUsers(); // 获取全部用户数据
        int totalData = userList.size(); // 总数据量

        // 创建分页对象
        PageUtil<User> pageUtil = new PageUtil<>(userList, currentPage, pageSize, totalData);

        return pageUtil;
    }
}

以上示例中,UserDao是一个数据访问对象,getAllUsers()方法返回数据库中的全部用户数据。UserService为用户服务类,其中的getUsersByPage()方法接受当前页码和每页显示的数据量作为参数,返回一个分页对象。

在Web应用中,可以使用以下代码来获取用户列表的分页数据并在页面上展示:

public class UserController {
    private UserService userService;

    public UserController(UserService userService) {
        this.userService = userService;
    }

    public void displayUsersByPage(int currentPage, int pageSize) {
        PageUtil<User> pageUtil = userService.getUsersByPage(currentPage, pageSize);

        // 在页面上展示分页数据
        List<User> userList = pageUtil.getData();
        for (User user : userList) {
            System.out.println(user.getName());
        }

        // 打印分页信息
        System.out.println("当前页码:" + pageUtil.getCurrentPage());
        System.out.println("总页数:" + pageUtil.getTotalPages());
        System.out.println("总数据量:" + pageUtil.getTotalData());
        System.out.println("是否有上一页:" + pageUtil.hasPreviousPage());
        System.out.println("是否有下一页:" + pageUtil.hasNextPage());
    }
}

在上述代码中,UserController为用户控制器类,其中的displayUsersByPage()方法接受当前页码和每页显示的数据量作为参数。通过调用userService中的getUsersByPage()方法获取分页数据,并在页面上展示数据和分页信息。

举报

相关推荐

0 条评论