关于mybatis-plus分页显示问题

显示问题:

如上图,调用方法时的分页数据query中没有参数。

解决方法:

一:

public class ×××ServiceImpl extends ServiceImpl<×××DAO, ×××DO> implements ×××Service

继承ServiceImpl<DAO,DO>方法

这里使用的是×××DAO.selectPage(page, queryWrapper);为mybatis的内置selectPage方法。

二:

PageManagerUtils.query(×××DAO, queryWrapper, param);

使用自己的工具类对数据进行处理

public class PageManagerUtils<T> {

    /**
     * 单表分页查询 -- 临时
     *
     * @param baseMapper baseMapper
     * @param queryWrapper queryWrapper
     * @param pageDTO pageDTO
     * @return IPage
     * @deprecated 建议使用静态方法 PageManagerUtils.query
     */
    @Deprecated
    public IPage<T> queryPage(BaseMapper<T> baseMapper, QueryWrapper<T> queryWrapper, SntPage pageDTO) {
        return query(baseMapper, queryWrapper, pageDTO);
    }

    /**
     * 单表分页查询 -- 临时
     *
     * @param baseMapper DAO
     * @param wrapper wrapper
     * @param pageDTO 分页信息
     * @param <T> DO类型
     * @return 分页数据
     */
    public static <T> IPage<T> query(BaseMapper<T> baseMapper, Wrapper<T> wrapper, SntPage pageDTO) {
        Page<T> page = new Page<>(pageDTO.getCurrentPage(), pageDTO.getPageSize());
        Integer count = baseMapper.selectCount(wrapper).intValue();
        page.setTotal(count);

        int minCount = (pageDTO.getCurrentPage() - 1) * pageDTO.getPageSize();
        if (count > minCount) {
            String limitSql = "LIMIT " + minCount + "," + pageDTO.getPageSize();
            if (wrapper instanceof QueryWrapper) {
                ((QueryWrapper<T>)wrapper).last(limitSql);
            } else if (wrapper instanceof LambdaQueryWrapper) {
                ((LambdaQueryWrapper<T>)wrapper).last(limitSql);
            } else {
                throw new Exception("无法识别的 wrapper 类型");
            }
            page.setRecords(baseMapper.selectList(wrapper));
        } else {
            page.setRecords(new ArrayList<>());
        }
        return page;
    }
}
// SntPage类
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//

public class SntPage {
    private static Integer MAX_PAGE_SIZE = 5000;
    private static Integer DEFAULT_PAGE_SIZE = 1000;
    private Integer pageSize;
    private Integer currentPage;
    private Integer totalRecored;

    public SntPage() {
    }

    public Integer getPageSize() {
        return this.pageSize != null && this.pageSize >= 1 ? this.pageSize : DEFAULT_PAGE_SIZE;
    }

    public void setPageSize(Integer pageSize) {
        if (pageSize == null) {
            this.pageSize = DEFAULT_PAGE_SIZE;
        } else if (pageSize > MAX_PAGE_SIZE) {
            this.pageSize = MAX_PAGE_SIZE;
        } else {
            this.pageSize = pageSize;
        }
    }

    public Integer getCurrentPage() {
        return this.currentPage != null && this.currentPage >= 1 ? this.currentPage : 1;
    }

    public void setCurrentPage(Integer currentPage) {
        this.currentPage = currentPage;
    }

    public Integer getPageTotal() {
        if (this.totalRecored == null) {
            return 0;
        } else {
            int tp = this.totalRecored / this.getPageSize();
            if (this.totalRecored % this.getPageSize() > 0) {
                ++tp;
            }

            return tp;
        }
    }

    public Integer getTotalRecored() {
        return this.totalRecored;
    }

    public void setTotalRecored(Integer totalRecored) {
        this.totalRecored = totalRecored;
    }

    public Integer getOffset() {
        return (this.getCurrentPage() - 1) * this.getPageSize();
    }
}

结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值