PageHelper分页和mybatis分页的相互转换

原文链接: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分页的相互转换 – 编程屋

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值