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!還是見識少啊,但是看了下源碼,覺得官方文檔真的是個好東西啊

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM