zoukankan      html  css  js  c++  java
  • List封装为Page对象

    最近在项目中,经常碰到这样的情况,就是说前台需要page对象,但是我后台page查询出来的数据(entity类)并不是前台需要的数据(dto),还需要二次封装,前台要page对象啊,习惯了用工具类,咋自己封装一个page对象哦?

    所有就有了这篇文章,实际上思路都是一样的,就是我返回的数据肯定是个Page对象,我查出来的数据要么是Page,要么是List,是page就getContent一下获取到List,然后再由List转为page对象;
    我自己找到的方法:

    首先要有分页必备的Pageable:

    Pageable pageable = new PageRequest(currentPage - 1, pageSize);

    然后就是主体了:

       private Page<SsoUserInfo> getPageSsoUserInfo(Pageable pageable, List<SsoUserInfo> userInfosList) {
            if (pageable.getOffset() > userInfosList.size()) {
                long total = 0l;
                PageImpl<SsoUserInfo> emptyPage = new PageImpl<>(Lists.newArrayList(), pageable, total);
                return emptyPage;
            }
            if (pageable.getOffset() <= userInfosList.size() && pageable.getOffset() + pageable.getPageSize() > userInfosList.size()) {
                List<SsoUserInfo> ssoUserInfos = userInfosList.subList((int) pageable.getOffset(), userInfosList.size());
                PageImpl<SsoUserInfo> ssoUserInfoPage = new PageImpl<>(ssoUserInfos, pageable, userInfosList.size());
                return ssoUserInfoPage;
            }
            List<SsoUserInfo> ssoUserInfos = userInfosList.subList((int) pageable.getOffset(), (int) (pageable.getOffset() + pageable.getPageSize()));
            PageImpl<SsoUserInfo> ssoUserInfoPage = new PageImpl<>(ssoUserInfos, pageable, userInfosList.size());
            return ssoUserInfoPage;
        }

    之所以会写这篇文章,因为我今天翻代码的时候,发现了我同事写的同样作用的代码:

    Pageable pageable = new PageRequest(formBean.getCurrentPage() - 1, formBean.getPageSize(), sort);
            Page<CmsContent> page = contentDao.findAll(specification, pageable);
            List<ContentDto> list = new ArrayList<>();
            for (CmsContent cmsContent : page.getContent()) {
                ContentDto text = dtoByContent(cmsContent);
                list.add(text);
            }
            return new PageImpl<ContentDto>(list, page.getPageable(), page.getTotalElements());

    mmp!还是见识少啊,但是看了下源码,觉得官方文档真的是个好东西啊

  • 相关阅读:
    倍增算法2(树上倍增)
    倍增算法1
    可持久线段树
    【BZOJ】1059: [ZJOI2007]矩阵游戏(二分图匹配)
    【BZOJ】2743: [HEOI2012]采花(树状数组)
    【BZOJ】2959: 长跑(lct+缩点)(暂时弃坑)
    【学习笔记】LCT link cut tree
    【学习笔记】FFT
    【BZOJ】1001: [BeiJing2006]狼抓兔子(最小割 / 对偶图)
    【BZOJ】1007: [HNOI2008]水平可见直线(凸包)
  • 原文地址:https://www.cnblogs.com/linsky/p/12981675.html
Copyright © 2011-2022 走看看