MyBatis分页插件PageHelper的用法的一个小疑问

发布于 2022-09-07 04:28:02 字数 124 浏览 13 评论 0

在一个项目中看到PageHelper分页插件这样的用法

图片描述

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

油饼 2022-09-14 04:28:02

productList 返回的是一个 Page 对象,Page 对象的声明:
Page 对象的声明

可见 Page 继承自 ArrayList,所以 Page 对象是一个 List


再来看看 PageInfo 的构造函数的源码:

    public PageInfo(List<T> list) {
        this(list, 8);
    }

    public PageInfo(List<T> list, int navigatePages) {
        if (list instanceof Page) {
            Page page = (Page) list;
            this.pageNum = page.getPageNum();
            this.pageSize = page.getPageSize();

            this.pages = page.getPages();
            this.list = page;
            this.size = page.size();
            this.total = page.getTotal();
            
            if (this.size == 0) {
                this.startRow = 0;
                this.endRow = 0;
            } else {
                this.startRow = page.getStartRow() + 1;
                
                this.endRow = this.startRow - 1 + this.size;
            }
        } else if (list instanceof Collection) {
            this.pageNum = 1;
            this.pageSize = list.size();

            this.pages = this.pageSize > 0 ? 1 : 0;
            this.list = list;
            this.size = list.size();
            this.total = list.size();
            this.startRow = 0;
            this.endRow = list.size() > 0 ? list.size() - 1 : 0;
        }
        ...
    }

关注第一个 if (list instanceof Page),可见如果当传入的 List 对象是一个 Page 的时候,可以直接通过这个 Page 对象来获得相关的分页信息。所以,这段代码,作者的意思应该是先通过 productList 这个 Page 对象来设置 PageInfo 的分页信息,然后再通过 setList 方法来改变具体的数据,从而 使得 PageInfo 中既有原来的分页信息,然后数据又是 VO 对象

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文