Mybatis-Plus操作分页后数据失效问题

业务场景

我们知道在使用PageHelper分页插件时,会对执行PageHelper.startPage(pageNum, pageSize);方法后的第一条查询语句进行分页操作。在开发中总会遇到这样的业务情景,在进行分页查询后,需要对获得的列表数据包装成另一种类型,此时需要对新类型的列表进行分页,然而由于PageInfo因为泛型的原因,导致处理后的列表不能加入到该类中。
如,我在数据库分页后查询到的类为PageInfo,此时改类中的list属性为User,在当前的业务场景下,我需要将User类型替换为UserVo类型。
当我们对list属性进行操作时,会同时导致PageInfo类中的其他属性发生改变,如total等。

解决方法

        //从数据库获得的Users分页列表
        //当我们打印users时,会发现打印出来的数据除了列表数据还有分页属性
        List<User> users = this.list();
        //操作users获得的需要的列表
        List<UserVo> userVos = this.list2(users);
        //创建User的info类,此时page中的属性已生成
        PageInfo<User> userPage = new PageInfo<>(users);
        //创建UserVo的info类
        PageInfo<UserVo> userVoPage= new PageInfo<>(userVos );
        //将userPage中除看list外的其他属性复制到userVoPage中
        PageInfoUtil pageInfoUtil = new PageInfoUtil();
        pageInfo = pageInfoUtil.getPageVo(userPage ,userVoPage);
pageInfoUtil
public class PageInfoUtil {
    public PageInfo getPageVo(PageInfo pageInfoPo,PageInfo pageInfoVo){
        pageInfoVo.setTotal(pageInfoPo.getTotal());
        pageInfoVo.setEndRow(pageInfoPo.getEndRow());
        pageInfoVo.setHasNextPage(pageInfoPo.isHasNextPage());
        pageInfoVo.setHasPreviousPage(pageInfoPo.isHasPreviousPage());
        pageInfoVo.setIsFirstPage(pageInfoPo.isIsFirstPage());
        pageInfoVo.setIsLastPage(pageInfoPo.isIsLastPage());
        pageInfoVo.setNavigateFirstPage(pageInfoPo.getNavigateFirstPage());
        pageInfoVo.setNavigateLastPage(pageInfoPo.getNavigateLastPage());
        pageInfoVo.setNavigatePages(pageInfoPo.getNavigatePages());
        pageInfoVo.setNavigatepageNums(pageInfoPo.getNavigatepageNums());
        pageInfoVo.setNextPage(pageInfoPo.getNextPage());
        pageInfoVo.setPageNum(pageInfoPo.getPageNum());
        pageInfoVo.setPages(pageInfoPo.getPages());
        pageInfoVo.setPageSize(pageInfoPo.getPageSize());
        pageInfoVo.setPrePage(pageInfoPo.getPrePage());
        pageInfoVo.setSize(pageInfoPo.getSize());
        pageInfoVo.setStartRow(pageInfoPo.getStartRow());
        pageInfoVo.setFirstPage(pageInfoPo.getFirstPage());
        pageInfoVo.setLastPage(pageInfoPo.getLastPage());
        return pageInfoVo;
    }
}

End

想使用秀一点的方法,结果能力有限,没有成功,只能使用这种笨方法,如果有更好的方法,欢迎各位指导。

我的博客李金泉的博客
我的简书LiJinQuanan

你可能感兴趣的:(Mybatis-Plus操作分页后数据失效问题)