分页的方法总结

本文介绍了两种Java中实现分页的方法:一种是直接处理,通过SQL语句配合前端传入的页码和每页数量进行分页;另一种是使用PageHelper分页工具包,只需在业务代码中调用即可轻松实现分页。详细步骤包括配置PageHelper包,以及展示关键分页代码和Spring Boot自带的分页包使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

分页:

  1. 直接处理
public Response findReportList(Long schoolCode, Long subjectCode, Long classCode,int index,int max) {

        Map<String,Object> map = Maps.newHashMap();

        Long reportNum = resultStatisticalMapper.getReportNum(schoolCode,subjectCode,classCode);
        List<ClassOutline> list= new ArrayList<>();
        if (reportNum > 0){
            list= resultStatisticalMapper.findReportList(schoolCode,subjectCode,classCode,(index * max),max);

            int num = (index * max) + max;
            if (num >= reportNum) {
                map.put("hasNext", false);
            } else {
                map.put("hasNext", true);
            }
        }else{
            map.put("hasNext", false);
        }
        map.put("total", (reportNum == null) ? 0 : reportNum);
        map.put("list", list);
        return Response.success(map);
    }

上面這个方法就是对报告列表分页查找, index(查询页码,默认从0开始),max(每页最多显示得条数),从前端传过来的。
在这里插入图片描述
报告列表得查询sqly语句;

LIMIT #{start}, #{max}

#{start}:查询结果得索引值(默认从0开始)
#{max}:为查询结果返回得数量。

  1. 使用分页工具包(PageHelper Spring Boot Starter)下载包地址
    打开链接,将這个包配置复制到pom.xml文件中,导入就可以使用了。
    在这里插入图片描述
    这个包在业务成掉用就可以了,只需要将它放在需要分页得前面一行就好。例如:
        Page resultPage=PageHelper.startPage(page,size);
        List list = comprehensiveReportServiceMapper.getRankDistributeList(schoolCode,parentExamId,subjectType,startRank,endRank-startRank,startScore,endScore);
        List objectiveScores= comprehensiveReportServiceMapper.getObjectiveScore(schoolCode,parentExamId,subjectType,startRank,endRank-startRank,startScore,endScore);

分页得关键代码
Page resultPage=PageHelper.startPage(page,size);
完整得业务层分页方法:

@Override
    public Response getRankDistributeList(Long schoolCode, Long parentExamId, int subjectType, Long startRank,
                                          Long endRank, Double startScore, Double endScore, Integer size, Integer page) {

        Page resultPage=PageHelper.startPage(page,size);  **1**
        List list = comprehensiveReportServiceMapper.getRankDistributeList(schoolCode,parentExamId,subjectType,startRank,endRank-startRank,startScore,endScore);  **2**
        List objectiveScores= comprehensiveReportServiceMapper.getObjectiveScore(schoolCode,parentExamId,subjectType,startRank,endRank-startRank,startScore,endScore);
        List results = new ArrayList();
        for (int i =0;i<list.size();i++){
            HashMap map = (HashMap)list.get(i);
            //每个学生的各科成绩列表
            List objectives = new ArrayList();
            HashMap objmap = new HashMap();
            int f = 0;
            for (int j =0;j<objectiveScores.size();j++){
                HashMap submap = (HashMap)objectiveScores.get(j);
                if ((map.get("studentId").toString()).equals(submap.get("studentId").toString())){
                    f++;
                    objmap.put("subjectId",submap.get("subjectId"));
                    objmap.put("subjectName",submap.get("subjectName"));
                    objmap.put("subjectScore",submap.get("subjectScore"));
                    objectives.add(objmap);
                    objmap = new HashMap();
                }else if (f >0){
                    map.put("subjects",objectives);
                    results.add(map);
                    break;//说明该班级的各科成绩也统计完,轮到下一个班级了
                }
                if (j == objectiveScores.size()-1){
                    map.put("subjects",objectives);
                    results.add(map);
                    break;
                }
            }

        }
        PageInfo<HashMap<String,Object>> pageInfo=new PageInfo<HashMap<String,Object>>(list);  **3**
        PageData<List<HashMap<String,Object>>> pageResult = new PageData<>();  **4**
        pageResult.setList(results);
        pageResult.setCurrentPage(page);
        pageResult.setTotal(pageInfo.getTotal());
        pageResult.setPages(pageInfo.getPages());
        pageResult.setSize(size);
        return Response.success(pageResult);
    }

分页重要代码1~4;

  1. sprint boot自带的分页包
package com.baomidou.mybatisplus.extension.plugins.pagination;

import com.baomidou.mybatisplus.core.metadata.IPage;
@RequestMapping("/list")
    @Permission(Const.ADMIN_NAME)
    @ResponseBody
    public Object list(@RequestParam(required = false) String beginTime,
                       @RequestParam(required = false) String endTime,
                       @RequestParam(required = false) String logName) {

        //1.获取分页参数
        Page page = LayuiPageFactory.defaultPage();  

        //2.根据条件查询日志,分页细节
        List<Map<String, Object>> result = loginLogService.getLoginLogs(page, beginTime, endTime, logName);
        //3.处理结果
        page.setRecords(new LogWrapper(result).wrap());

        return LayuiPageFactory.createPageInfo(page);
    }
  1. 1 获取分页参数
    在这里插入图片描述
    3.2 根据条件查询日志,分页细节(Mapper)
    在这里插入图片描述
    在这里插入图片描述
    注意sql返回的参数及类型。

3.3根据条件查询日志,分页细节(Mapper)
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值