原文链接:PageHelper分页和mybatis分页的相互转换 – 编程屋
1 前言
大家平时在开发中肯定会要进行到分页,但是有时候方法中会遇到各种各样的查询,而且在别人的接口中去添加代码时,有时会破坏其原本的分页,所以这个时候就需要我们对其进行转换了。
碰巧,今天在进行分页查询时,发现总是查询10条数据,其余的数据查询不出来。
相关代码如下:
//为了方便阅读,只留了一些关键的包导入
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
public PageInfo<LessonTeacherResult> getLessonTeacherList(LessonTeacherDto dto) {
PageHelper.startPage(dto.getPageNum(), dto.getPageSize());
List<LessonTeacherPlan> lessonTeachers = baseMapper.selectList(queryWrapper);
//其余逻辑代码
lessonTeachers .forEach(lessonTeacher -> {
LessonTeacherResult lessonTeacherResult = new LessonTeacherResult();
lessonTeacherResult.setId(lessonTeacher.getId());
lessonTeacherResult.setTeacherName(lessonTeacher.getTeacherName());
lessonTeacherResult.setSuitableObject(lessonTeacher.getSuitableObject());
lessonTeacherResult.setClassNum(lessonTeacher.getClassNum());
lessonTeacherResult.setCopyrightOwnership(lessonTeacher.getCopyrightOwnership());
lessonTeacherResult.setClassNum(lessonTeacher.getClassNum());
lessonTeacherResult.setIntroduce(lessonTeacher.getIntroduce());
lessonTeacherResult.setCreateTime(lessonTeacher.getCreateTime());
lessonTeacherResult.setUpdateTime(lessonTeacher.getUpdateTime());
if (lessonTeacher.getSize() != null ) {
lessonTeacherResult.setSize(CompareUtil.compareKb(lessonTeacher.getSize().longValue()));
}
lessonTeacherResultList.add(lessonTeacherResult);
});
return new PageInfo<>(lessonTeachers);
}
我用了这样的方式来进行分页,但是总是给前端返回10条数据。因为此时我们放入PageInfo对象中的数据并不是分页之后的数据(PageHelper需写在进行需要分页的上面),而是对分页之后的数据再次进行的处理,所以它并不能够进行自动的分页。
于是想要看其他之前的代码是如何进行操作的,但是发现他们用的都是自己封装过的,而我的接口接口已经与前端完成了联调,像别人那样改动就必须让前端也进行相应的修改,索性就自己封装依然按照原有的参数去进行返回。
修改之后的代码如下:
//为了方便阅读,只留了一些关键的包导入
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
public PageInfo<LessonTeacherResult> getLessonTeacherList(LessonTeacherDto dto) {
List<LessonTeacherResult> lessonTeacherResultList = new ArrayList<>();
LambdaQueryWrapper<LessonTeacherPlan> queryWrapper = new LambdaQueryWrapper<>();
if (dto.getSuitableObject() != null && dto.getSuitableObject() > 0){
queryWrapper.eq(LessonTeacherPlan::getSuitableObject,dto.getSuitableObject());
}
queryWrapper.orderByDesc(LessonTeacherPlan::getCreateTime);
// PageHelper.startPage(dto.getPageNum(), dto.getPageSize());
// List<LessonTeacherPlan> lessonTeachers = baseMapper.selectList(queryWrapper);
Page<LessonTeacherPlan> page = new Page<>(dto.getPageNum(), dto.getPageSize());
Page<LessonTeacherPlan> lessonTeacherPlanPage = baseMapper.selectPage(page, queryWrapper);
lessonTeacherPlanPage.getRecords().forEach(lessonTeacher -> {
LessonTeacherResult lessonTeacherResult = new LessonTeacherResult();
lessonTeacherResult.setId(lessonTeacher.getId());
lessonTeacherResult.setTeacherName(lessonTeacher.getTeacherName());
lessonTeacherResult.setSuitableObject(lessonTeacher.getSuitableObject());
lessonTeacherResult.setClassNum(lessonTeacher.getClassNum());
lessonTeacherResult.setCopyrightOwnership(lessonTeacher.getCopyrightOwnership());
lessonTeacherResult.setClassNum(lessonTeacher.getClassNum());
lessonTeacherResult.setIntroduce(lessonTeacher.getIntroduce());
lessonTeacherResult.setCreateTime(lessonTeacher.getCreateTime());
lessonTeacherResult.setUpdateTime(lessonTeacher.getUpdateTime());
if (lessonTeacher.getSize() != null ) {
lessonTeacherResult.setSize(CompareUtil.compareKb(lessonTeacher.getSize().longValue()));
}
lessonTeacherResultList.add(lessonTeacherResult);
});
PageInfo<LessonTeacherResult> pageInfo = new PageInfo<>();
pageInfo.setPages((int)lessonTeacherPlanPage.getPages());
pageInfo.setPageNum((int)lessonTeacherPlanPage.getCurrent());
pageInfo.setPageSize((int)lessonTeacherPlanPage.getSize());
pageInfo.setTotal(lessonTeacherPlanPage.getTotal());
pageInfo.setList(lessonTeacherResultList);
return pageInfo;
}
这样就OK了
以上只是部分内容,为了维护方便,本文已迁移到新地址:PageHelper分页和mybatis分页的相互转换 – 编程屋