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

Mybatis-Plus操作分页后数据失效问题业务场景 我们知道在使用 PageHelper 分页插件时 会对执行 PageHelper startPage pageNum pageSize 方法后的第一条查询语句进行分页操作 在开发中总会遇到这样的业务情景 在进行分页查询后 需要对获得的列表数据包装成另一种类型 此时需要对新类型的列表进行分页

大家好,我是讯享网,很高兴认识大家。

业务场景

我们知道在使用PageHelper分页插件时,会对执行PageHelper.startPage(pageNum, pageSize);方法后的第一条查询语句进行分页操作。在开发中总会遇到这样的业务情景,在进行分页查询后,需要对获得的列表数据包装成另一种类型,此时需要对新类型的列表进行分页,然而由于PageInfo<T>因为泛型的原因,导致处理后的列表不能加入到该类中。
如,我在数据库分页后查询到的类为PageInfo<User>,此时改类中的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

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

小讯
上一篇 2025-01-28 21:16
下一篇 2025-04-02 11:55

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/60200.html