Java 自定义工具类实现分页

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 16:46   1053   0

业务接口

 /**
   * 订购实例查询接口
   *
   * @param input
   * @return
  */
 @ApiOperation(value = "订购实例查询接口", notes = "入参:userId、pageSize(分页数据条数)、pageNum(当前页码)")
 Map queryOrderInstance(Map input);

调用工具类方法(相关参数的非空校验这里不再贴出):

   List returnList = PageUtils.startPage(userList, pageNum, pageSize);
   userMap.put("userInfos", returnList);
   //返回总记录数
   userMap.put("total", userList.size());
   result.put("body", userMap);
   return result;

工具类:


import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
 * 自定义List分页工具类
 * @author zhangjie
 * @date 2020-09-15
 */
public class PageUtils {

  /**
   * 开始分页
   * @param objectList 分页对象
   * @param pageNum    页码
   * @param pageSize   每页数据条数
   * @return
  */
  public static List startPage(List<Map> objectList, Integer pageNum, Integer pageSize) {
        if (ArrayUtils.isEmpty(objectList)) {
            return new ArrayList();
        }
        //防止起始索引为负数,程序抛出IndexOutOfBoundsException
        if (pageNum <= 0){
            pageNum = 1;
        }

        // 总记录数
        Integer totalCount = objectList.size();
        // 开始索引
        int fromIndex = (pageNum - 1) * pageSize;;
        // 结束索引
        int endIndex = 0;

        //分页起始索引fromIndex不能大于结果集总记录数
        if(totalCount >= fromIndex) {
            endIndex = fromIndex + pageSize;
            //最后一条记录的索引大于总记录数
            if (endIndex > totalCount) {
                //结束索引为集合的最后一个元素索引
                endIndex = totalCount;
            }
        } else {
            return new ArrayList();
        }

        List<Map> pageList = objectList.subList(fromIndex, endIndex);
        return pageList;
    }
}

最终在Swagger UI测试的返回结果 ↓↓

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP