分页:
- 直接处理
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}:为查询结果返回得数量。
- 使用分页工具包(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;
- 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 获取分页参数
3.2 根据条件查询日志,分页细节(Mapper)
注意sql返回的参数及类型。
3.3根据条件查询日志,分页细节(Mapper)