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了

posted @ 2022-08-26 15:51  小猪不会叫  阅读(156)  评论(0)    收藏  举报  来源