自己写的分页

复制代码
package com.hainei.samp.common.utils;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.stereotype.Component;

import java.util.LinkedList;
import java.util.List;

/**
 * Created with IntelliJ IDEA.
 * User:wq
 * Date:2022/6/13
 * Time: 14:45
 * Description: No Description
 */
@Component
public class PageInfoUtils {
    public static <T> PageInfo<T> list2PageInfo(List<T> arrayList, Integer pageNum, Integer pageSize) {
        //实现list分页
        PageHelper.startPage(pageNum, pageSize);
        int pageStart = pageNum == 1 ? 0 : (pageNum - 1) * pageSize;
        int pageEnd = arrayList.size() < pageSize * pageNum ? arrayList.size() : pageSize * pageNum;
        List<T> pageResult = new LinkedList<T>();
        if (arrayList.size() > pageStart) {
            pageResult = arrayList.subList(pageStart, pageEnd);
        }
        PageInfo<T> pageInfo = new PageInfo<T>(pageResult);
        //获取PageInfo其他参数
        pageInfo.setTotal(arrayList.size());
        int endRow = pageInfo.getEndRow() == 0 ? 0 : (pageNum - 1) * pageSize + pageInfo.getEndRow() + 1;
        pageInfo.setEndRow(endRow);
        boolean hasNextPage = arrayList.size() <= pageSize * pageNum ? false : true;
        pageInfo.setHasNextPage(hasNextPage);
        boolean hasPreviousPage = pageNum == 1 ? false : true;
        pageInfo.setHasPreviousPage(hasPreviousPage);
        pageInfo.setIsFirstPage(!hasPreviousPage);
        boolean isLastPage = (arrayList.size() > pageSize * (pageNum - 1) && arrayList.size() <= pageSize * pageNum) ? true : false;
        pageInfo.setIsLastPage(isLastPage);
        int pages = arrayList.size() % pageSize == 0 ? arrayList.size() / pageSize : (arrayList.size() / pageSize) + 1;
        pageInfo.setNavigateLastPage(pages);
        int[] navigatePageNums = new int[pages];
        for (int i = 1; i < pages; i++) {
            navigatePageNums[i - 1] = i;
        }
        pageInfo.setNavigatepageNums(navigatePageNums);
        int nextPage = pageNum < pages ? pageNum + 1 : 0;
        pageInfo.setNextPage(nextPage);
        pageInfo.setPageNum(pageNum);
        pageInfo.setPageSize(pageSize);
        pageInfo.setPages(pages);
        pageInfo.setPrePage(pageNum - 1);
        pageInfo.setSize(pageInfo.getList().size());
        int starRow = arrayList.size() < pageSize * pageNum ? 1 + pageSize * (pageNum - 1) : 0;
        pageInfo.setStartRow(starRow);
        return pageInfo;
    }

    public static <T> PageVO<T> convertPage(PageInfo<T> t){
        PageVO<T> result = new PageVO<>();
        result.setTotal(t.getTotal());
        result.setTotalPages(t.getPages());
        result.setPageNum(t.getPageNum());
        result.setPageSize(t.getPageSize());
        result.setList(t.getList());
        return result;
    }
}
复制代码

 

 

自己分页转换成特定格式返回
复制代码
 @Override
    public PageVO<PartyDynamicContentBO> listRecord(PartyDynamicContentQueryBO partyDynamicContentQueryBO) {
       // PageHelper.startPage(partyDynamicContentQueryBO.getPageNum(),partyDynamicContentQueryBO.getPageSize());
        List<PartyDynamicContentBO> partyDynamicContentBOS = partyDynamicContentMapper.listAll(partyDynamicContentQueryBO);
        List<PartyDynamicContentBO> stickList = stick(partyDynamicContentBOS, partyDynamicContentQueryBO.getPageNum());
        List dataList = paging.getpage(stickList, partyDynamicContentQueryBO.getPageNum(), partyDynamicContentQueryBO.getPageSize());
        PageInfo<PartyDynamicContentBO> pageInfo = new PageInfo<>(dataList);
        pageInfo.setPageNum(partyDynamicContentQueryBO.getPageNum());
        pageInfo.setTotal(dataList.size());
        PageVO<PartyDynamicContentBO> partyDynamicContentBOPageVO = convertPage(pageInfo);
        return partyDynamicContentBOPageVO;
    }

    PageVO<PartyDynamicContentBO> convertPage(PageInfo<PartyDynamicContentBO> pageInfo){
       PageVO<PartyDynamicContentBO> result=new PageVO<>();
       result.setTotalRows(pageInfo.getTotal());
       result.setTotalPages(pageInfo.getPages());
       result.setPageNum(pageInfo.getPageNum());
       result.setCurPageSize(pageInfo.getSize());
       result.setPageSize(pageInfo.getPageSize());
       result.setList(pageInfo.getList());
       return result;
    }
复制代码

 

复制代码
@Component
public class Paging {
    public List getpage(List list, Integer pageNum, Integer pageSize){
        int i = (pageNum-1)*pageSize;

        List listpage = new ArrayList();
        for(Integer j=i;j<i+pageSize;j++){
            if(j<list.size()){
                listpage.add(list.get(j));
            }else{
                break;
            }
        }
        return listpage;
    }
}
复制代码

 



详细代码
复制代码
package com.hainei.service.impl.party;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.hainei.common.constants.BaseConstant;
import com.hainei.common.enums.YesOrNo;
import com.hainei.common.token.JwtTokenUtil;
import com.hainei.common.utils.PageUtil;
import com.hainei.common.utils.PageVO;
import com.hainei.common.utils.Paging;
import com.hainei.mapper.party.PartyDynamicContentMapper;
import com.hainei.pojo.bo.party.PartyDynamicContentBO;
import com.hainei.pojo.bo.party.PartyDynamicContentQueryBO;
import com.hainei.pojo.model.party.PartyDynamicContent;
import com.hainei.service.party.PartyDynamicContentService;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.UUID;

/**
 * Created with IntelliJ IDEA.
 * User:wq
 * Date:2022/1/20
 * Time: 11:31
 * Description: No Description
 */
@Service
@Transactional
public class PartyDynamicContentServiceImpl implements PartyDynamicContentService {
    @Autowired
    private PartyDynamicContentMapper partyDynamicContentMapper;
    @Autowired
    private Paging paging;
    @Autowired
    private HttpServletRequest request;
    @Override
    public void insertOrUpdateRecord(PartyDynamicContentBO partyDynamicContentBO) {
        String accessToken = request.getHeader(BaseConstant.ACCESS_TOKEN);
        String userId = JwtTokenUtil.getUserId(accessToken);
        PartyDynamicContent partyDynamicContent = new PartyDynamicContent();
        BeanUtils.copyProperties(partyDynamicContentBO,partyDynamicContent);

        if(StringUtils.isNotBlank(partyDynamicContentBO.getId())){
            partyDynamicContent.setGmtUpdatedBy(userId);
            partyDynamicContent.setGmtUpdatedOn(new Date());
            partyDynamicContentMapper.updateByPrimaryKeySelective(partyDynamicContent);
        }else {
            partyDynamicContent.setGmtCreatedBy(userId);
            partyDynamicContent.setGmtCreatedOn(new Date());
            String id = UUID.randomUUID().toString().replaceAll("-", "");
            partyDynamicContent.setId(id);
            partyDynamicContent.setIsDeleted(YesOrNo.NO.type);
            partyDynamicContentMapper.insertSelective(partyDynamicContent);
        }
    }

    @Override
    public void deleteRecord(String id) {
        if(StringUtils.isNotBlank(id)){
            PartyDynamicContent partyDynamicContent = new PartyDynamicContent();
            partyDynamicContent.setIsDeleted(YesOrNo.YES.type);
            partyDynamicContent.setId(id);
            partyDynamicContentMapper.updateByPrimaryKeySelective(partyDynamicContent);
        }
    }

    @Override
    public PageVO<PartyDynamicContentBO> listRecord(PartyDynamicContentQueryBO partyDynamicContentQueryBO) {
       // PageHelper.startPage(partyDynamicContentQueryBO.getPageNum(),partyDynamicContentQueryBO.getPageSize());
        List<PartyDynamicContentBO> partyDynamicContentBOS = partyDynamicContentMapper.listAll(partyDynamicContentQueryBO);
        List<PartyDynamicContentBO> stickList = stick(partyDynamicContentBOS, partyDynamicContentQueryBO.getPageNum());
        List dataList = paging.getpage(stickList, partyDynamicContentQueryBO.getPageNum(), partyDynamicContentQueryBO.getPageSize());
        PageInfo<PartyDynamicContentBO> pageInfo = new PageInfo<>(dataList);
        pageInfo.setPageNum(partyDynamicContentQueryBO.getPageNum());
        pageInfo.setTotal(dataList.size());
        PageVO<PartyDynamicContentBO> partyDynamicContentBOPageVO = convertPage(pageInfo);
        return partyDynamicContentBOPageVO;
    }

    PageVO<PartyDynamicContentBO> convertPage(PageInfo<PartyDynamicContentBO> pageInfo){
       PageVO<PartyDynamicContentBO> result=new PageVO<>();
       result.setTotalRows(pageInfo.getTotal());
       result.setTotalPages(pageInfo.getPages());
       result.setPageNum(pageInfo.getPageNum());
       result.setCurPageSize(pageInfo.getSize());
       result.setPageSize(pageInfo.getPageSize());
       result.setList(pageInfo.getList());
       return result;
    }

    @Override
    public PartyDynamicContentBO getById(String id) {
        if(StringUtils.isNotBlank(id)){
            PartyDynamicContentBO byId = partyDynamicContentMapper.getById(id);
            return byId;
        }

        return null;
    }

    @Override
    public void changeStick(String preStackId, String currentId) {
        //之前置顶数据至为0
        PartyDynamicContent preStackObject = new PartyDynamicContent();
        preStackObject.setIsSticked(YesOrNo.NO.type);
        preStackObject.setId(preStackId);
        partyDynamicContentMapper.updateByPrimaryKeySelective(preStackObject);
        //需要置顶数据置为1
        PartyDynamicContent toStackObject = new PartyDynamicContent();
        toStackObject.setIsSticked(YesOrNo.YES.type);
        toStackObject.setId(currentId);
        partyDynamicContentMapper.updateByPrimaryKeySelective(toStackObject);
    }

    /**
     * 置顶 数据
     */
    List<PartyDynamicContentBO> stick(List<PartyDynamicContentBO> partyDynamicContentBOList,Integer pageNum){
        if(pageNum == 1){
            List<PartyDynamicContentBO> list = new ArrayList<>();
            if(CollectionUtils.isNotEmpty(partyDynamicContentBOList)){
              partyDynamicContentBOList.stream().filter(p-> p.getIsSticked() != null && p.getIsSticked() == 1).forEach(m->{
                      list.add(m);
              });
              partyDynamicContentBOList.stream().filter(m->m.getIsSticked() != null && m.getIsSticked() ==0).forEach(p->{
                  list.add(p);
              });
            }
            return list;
        }
        return partyDynamicContentBOList;

    }
}
View Code
复制代码

 

posted @   wq9  阅读(66)  评论(0编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
点击右上角即可分享
微信分享提示