1. 先看目录结构

SpringBoot 中使用mybatis-Plus 中分页和条件查询_java

  1. 在配置文件中 配置 分页插件 版本为 3.0.5
//配置分页插件
// 旧版
@Bean
public PaginationInterceptor paginationInterceptor() {
    PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
    // 设置请求的页面大于最大页后操作, true调回到首页,false 继续请求  默认false
    // paginationInterceptor.setOverflow(false);
    // 设置最大单页限制数量,默认 500 条,-1 不受限制
    // paginationInterceptor.setLimit(500);
    // 开启 count 的 join 优化,只针对部分 left join
  //  paginationInterceptor.setCountSqlParser(new JsqlParserCountOptimize(true));
    return paginationInterceptor;
}
  1. 分页查询功能

SpringBoot 中使用mybatis-Plus 中分页和条件查询_分页_02

4.带条件的分页查询功能

SpringBoot 中使用mybatis-Plus 中分页和条件查询_分页查询_03

// 条件查询 带分页
@ApiOperation("条件查询带分页")
@PostMapping("pageWhere/{current}/{limit}")
public R pageWhere(@PathVariable Long current, @PathVariable Long limit,
                   @RequestBody(required = false) TeacherQuery teacherQuery){
    //创建一个分页对象  一般post 都是使用一个类文件接受相对应的参数
    Page<EduTeacher> objectPage = new Page<>(current,limit);
    //构造查询条件
    QueryWrapper<EduTeacher> objectQueryWrapper = new QueryWrapper<>();
    String name = teacherQuery.getName();
    Integer level = teacherQuery.getLevel();
    String begin = teacherQuery.getBegin();
    String end = teacherQuery.getEnd();
    if(!StringUtils.isEmpty(name)){
        objectQueryWrapper.like("name",name);
    }
    if(!StringUtils.isEmpty(level)){
        objectQueryWrapper.eq("level",level);
    }
    if(!StringUtils.isEmpty(begin)){
        objectQueryWrapper.like("gmt_create",name);
    }
    if(!StringUtils.isEmpty(end)){
        objectQueryWrapper.like("gmt_create",end);
    }
    //调用方法 使用分页
    eduTeacherService.page(objectPage, objectQueryWrapper);
    long total = objectPage.getTotal();  //总记录数
    List<EduTeacher> records = objectPage.getRecords(); //集合
    return R.ok().data("total",total).data("list",records);
}
  1. TeacherQuery 类
package com.school.eduservice.entity.vo;

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

/**
 * @User: Json
 * @Date: 2021/11/21
 **/
@Data
public class TeacherQuery {

    @ApiModelProperty(value = "姓名")
    private String name;   //姓名
    @ApiModelProperty(value = "等级")
    private Integer level; //等级
    @ApiModelProperty(value = "开始时间")
    private String begin; //开始时间   使用String 类型 前端传过来无需转换
    @ApiModelProperty(value = "结束时间")
    private String end;  // 结束时间
}