mybatis分页插件是序列化数据丢失原因和解决思路

7 篇文章 0 订阅
5 篇文章 0 订阅

使用com.github.pagehelper.Page 类的时候

当在数据库分页查询到数据之后传递给前端.会有一个奇怪的问题,

public class Page<E> extends ArrayList<E> {
    private static final long serialVersionUID = 1L;
    private int pageNum;
    private int pageSize;
    private int startRow;
    private int endRow;
    private long total;
    private int pages;
    private boolean count;
    private Boolean reasonable;
    private Boolean pageSizeZero;
}

类中的这些属性都没有.只会把list传给前端,

为什么呢

刚开始我以为是getset方法的问题.当我找到get方法的时候排除了,有get方法并且也是public的;

主要原因是因为Page继承的是ArrayList类,在转成json的时候会转成JsonArray,而这个过程自定义的这些私有变量全部不会转化,所以会造成数据的丢失,

解决的办法很简单:

1.自己把page转成json,但是我自己也没这样写过,因为我觉得这样有点麻烦

2.自己写一个类,不继承ArrayList,把数据放到自定义的对象中,即可,例如:

public class PageInfo<T> implements Serializable {

    private Collection<T> collection;

    private int pageNum;
    private int pageSize;
    private long total;
    private int pages;

    public PageInfo(Page page){
        this.collection = new ArrayList<>(page);
        this.pageNum = page.getPageNum();
        this.pageSize = page.getPageSize();
        this.pages = page.getPages();
        this.total = page.getTotal();
    }
}

因为我不需要太多属性,因此跳了两个属性,获取到page之后转成pageInfo传递给前端即可;

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值