MybatisPlus实现条件分页

本文介绍了如何使用MybatisPlus实现分页条件查询。通过TeacherQuery对象封装查询条件,如教师名称、头衔和时间,然后在Controller中调用Service接口实现分页查询。在ServiceImpl中,根据条件构造QueryWrapper并进行非空判断,避免空值导致的查询问题。最后返回分页查询结果和总条数。
摘要由CSDN通过智能技术生成

现在MybatisPlus的应用次数很多,自动生成以及封装了很多函数,今天记录下如何实现MybatisPlus下的分页。

条件查询的需求

按名称,头衔以及起始时间来查询

TeacherQuery用来封装条件查询

表示可以按名称,头衔以及起始时间来查询

// An highlighted block
@ApiModel(value = "Teacher查询对象", description = "讲师查询对象封装")
@Data
public class TeacherQuery implements Serializable {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty(value = "教师名称,模糊查询")
    private String name;

    @ApiModelProperty(value = "头衔 1高级讲师 2首席讲师")
    private Integer level;

    @ApiModelProperty(value = "查询开始时间", example = "2019-01-01 10:10:10")
    private String begin;//注意,这里使用的是String类型,前端传过来的数据无需进行类型转换

    @ApiModelProperty(value = "查询结束时间", example = "2019-12-01 10:10:10")
    private String end;
}

Controller中调用

这个pageQuery( )是在Service中定义的方法

// An highlighted block
    //分页的条件查询方法
    @PostMapping("{page}/{limit}")				//page代表当前的页数,limit表示每页限定的条数
    public R getPageTeacher(@PathVariable long page,
                            @PathVariable  long limit,		//TeacherQuery对象不是必须要传的,没有默认为查询全部
                            @RequestBody(required = false) TeacherQuery teacherQuery){		
            Page<EduTeacher> eduTeacherPage = new Page<>(page,limit);	//用Mp中封装好的方法,声明一个Page,传入参数
            teacherService.pageQuery(eduTeacherPage,teacherQuery);//teacherQuery是封装的条件查询对象
            List<EduTeacher> teacherList = eduTeacherPage.getRecords();				//page对象service调用后才能拿到数据
            long total = eduTeacherPage.getTotal();		//获取条数

            return R.ok().data("TeacherList",teacherList).data("total",total);
    }

serviceImpl接口实现类

如果这里不做非空判断,会出现查询张三,等级,起始时间为空的情况,导致查询结果为null

@Service
public class TeacherServiceImpl extends ServiceImpl<EduTeacherMapper, EduTeacher> implements TeacherService {
    @Override
    public void pageQuery(Page<EduTeacher> pageParam, TeacherQuery teacherQuery) {
        QueryWrapper<EduTeacher> queryWrapper = new QueryWrapper<>();
        queryWrapper.orderByDesc("gmt_create");		//按照字段降序

        if(teacherQuery == null){				//如果传过来的查询条件为空就直接调用系统封装的分页方法
            baseMapper.selectPage(pageParam, queryWrapper);
            return;
        }

        String name = teacherQuery.getName();
        Integer level = teacherQuery.getLevel();
        String begin = teacherQuery.getBegin();
        String end = teacherQuery.getEnd();

        if (!StringUtils.isEmpty(name)) {
            queryWrapper.like("name", name);		//查询条件不为空则判断是否有name
        }

        if (!(level == null)) {
            queryWrapper.eq("level", level);        //查询条件不为空则判断是否有等级
        }

        if (!StringUtils.isEmpty(begin)) {
            queryWrapper.ge("gmt_create", begin);
        }

        if (!StringUtils.isEmpty(end)) {
            queryWrapper.le("gmt_create", end);
        }

        baseMapper.selectPage(pageParam, queryWrapper);		//拿到查询条件调用分页方法
    }
}

这就是完整的条件分页查询流程啦。

  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值