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

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

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

public class Page extends ArrayList {
    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 implements Serializable {

    private Collection 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传递给前端即可;

你可能感兴趣的:(springmvc,java,spring)