springboot+vue——7

文章目录

    • 1.配置mybatis分页插件
    • 2.controller层编写分页查询方法
    • 3.实现条件查询分页功能

1.配置mybatis分页插件

在配置类中配置分页插件
springboot+vue——7_第1张图片

/**
 * 分页插件
 */
@Bean
public PaginationInterceptor paginationInterceptor() {
     
    return new PaginationInterceptor();
}

2.controller层编写分页查询方法

2.1先创建page对象(mybatis plus的)
有两个参数page(当前页)和limit(该页有几条数据),

Page<EduTeacher> pageParam = new Page<>(page, limit);

2.2查询分页数据
page()方法也是已经封装好的方法,直接调用就行,第一个参数为上边定义的page对象,第二个为查询条件,没有条件为null

eduTeacherService.page(pageParam, null);

2.3获取总记录数和某页的所有数据集合

        List<EduTeacher> records = pageParam.getRecords();//当前页的数据集合
        long total = pageParam.getTotal();//总记录数

2.4完整代码

//分页查询方法
    @ApiOperation(value = "分页讲师列表")
    @GetMapping("{page}/{limit}")
    public R pageList(
            @ApiParam(name = "page", value = "当前页码", required = true)
            @PathVariable Long page,

            @ApiParam(name = "limit", value = "每页记录数", required = true)
            @PathVariable Long limit){
     

        Page<EduTeacher> pageParam = new Page<>(page, limit);

        eduTeacherService.page(pageParam, null);
        List<EduTeacher> records = pageParam.getRecords();
        long total = pageParam.getTotal();

        return  R.ok().data("total", total).data("rows", records);
    }

3.实现条件查询分页功能

3.1理清思路
把条件传给对象,通过对象传给后端接口。
该课程是把条件重新封装成了一个对象。
根据条件创建条件类。
3.2创建条件类
springboot+vue——7_第2张图片

@ApiModel(value = "Teacher查询对象", description = "讲师查询对象封装")
@Data
public class TeacherQuery  {
     

    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;
}

3.3controller编写分页方法
3.3.1第三个参数为条件对象

 @GetMapping("pageTeacherCondition/{current}/{limit}")
    public R pageTeacherCondition(@PathVariable long current, @PathVariable long limit, TeacherQuery teacherQuery){
     

3.3.2创建page对象

Page<EduTeacher> pageParam = new Page<>(page, limit);

3.3.3创建QueryWrapper,用来设置条件

QueryWrapper<EduTeacher> wrapper = new QueryWrapper<>();

3.3.4判断条件是否为空
获得对象的值

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

如果为空直接查询无条件,如果不为空添加条件进行查询。

StringUtils.isNullOrEmpty()

一个判dao断字符串是否du为空引用或者zhi值为空的方法。
能够判断dao一个String字符串是否是百空回引用(null),或值为空(empty),功能相当于string.IsNull()和string.Trim().Length总和。

        if(!StringUtils.isNullOrEmpty(name)){
     
            wrapper.like("name",name);
        }

like()方法表示模糊查询,第一个参数是数据库中的表的列名,后边为条件值。
剩下三个方法类似。

        if(!StringUtils.isNullOrEmpty(name)){
     
            wrapper.like("name",name);//模糊查询
        }
        if(level!=null){
     
            wrapper.eq("level", level);//等于
        }
        if(!StringUtils.isNullOrEmpty(begin)){
     
            wrapper.ge("gmt_create", begin);//大于等于
        }
        if(!StringUtils.isNullOrEmpty(end)){
     
            wrapper.le("gmt_create", end);//小于等于
        }

完整方法

 //条件分页查询
    @GetMapping("pageTeacherCondition/{current}/{limit}")
    public R pageTeacherCondition(@PathVariable long current, @PathVariable long limit,  TeacherQuery teacherQuery){
     
        Page<EduTeacher> pageParam = new Page<>(current, limit);
        String name = teacherQuery.getName();
        String begin = teacherQuery.getBegin();
        String end = teacherQuery.getEnd();
        Integer level = teacherQuery.getLevel();
        //创建querywapper
        QueryWrapper<EduTeacher> wrapper = new QueryWrapper<>();
        if(!StringUtils.isNullOrEmpty(name)){
     
            wrapper.like("name",name);
        }
        if(level!=null){
     
            wrapper.eq("level", level);
        }
        if(!StringUtils.isNullOrEmpty(begin)){
     
            wrapper.ge("gmt_create", begin);
        }
        if(!StringUtils.isNullOrEmpty(end)){
     
            wrapper.le("gmt_create", end);
        }


        eduTeacherService.page(pageParam,wrapper);
        List<EduTeacher> records = pageParam.getRecords();
        long total = pageParam.getTotal();
        return  R.ok().data("total", total).data("rows", records);
    }

测试方法
springboot+vue——7_第3张图片
springboot+vue——7_第4张图片
@RequestBody(required = false)
该注解是把参数以json类型传输
使用该注解需要使用@PostMapping

(required = false)
表示参数可以为空

你可能感兴趣的:(java,spring,boot)