其他分享
首页 > 其他分享> > 实战项目-03(讲师的分页查询和条件查询,添加,修改)

实战项目-03(讲师的分页查询和条件查询,添加,修改)

作者:互联网

讲师的分页查询

MybatisPlusConfig中配置分页插件

在config中的EduConfig配置分页插件

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

编写分页controller中的方法

 //分页查询(1. 增加插件 2. 创建page对象
    @ApiOperation(value = "分页查询讲师")
    @GetMapping("pageTeacher/{current}/{limit}")//current:当前页,limit:记录数
    public R pageListTeacher(@ApiParam(name = "current" , value = "当前页" , required = true) @PathVariable long current,
                             @ApiParam(name = "limit" , value = "记录数" , required = true) @PathVariable long limit){
        //创建page对象
        Page<EduTeacher> pageTeacher = new Page<>(current,limit);

        //调用方法实现分页(调用方法的时候,底层封装,把分页所有数据封装到pageTeacher对象里面)
        teacherService.page(pageTeacher,null);

        long total = pageTeacher.getTotal();//总记录数
        List<EduTeacher> records = pageTeacher.getRecords();//数据的list集合

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

多条件组合查询带分页

页面类似
image

1. 需要把条件值传递到接口里面(vo)

在实体类中添加vo包在vo包中添加TeacherQuery

package com.sli.eduservice.entity.vo;

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

/**
 * @author 1_f_
 * @create 2021-10-16 16:40
 */
//次类用于数据的封装
@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;

}

对应上面图片中的名称,级别,开始和结束

2. 根据条件值进行判断,拼接条件(controller中增加方法)

//条件查询带分页
    @ApiOperation(value = "条件分页查询讲师")
    @PostMapping("pageTeacherCondition/{current}/{limit}")
    public R pageTeacherCondition(@ApiParam(name = "current" , value = "当前页" , required = true) @PathVariable long current,
                                  @ApiParam(name = "limit" , value = "记录数" , required = true) @PathVariable long limit,
                                  @RequestBody(required = false) TeacherQuery teacherQuery){

        //创建一个page对象
        Page<EduTeacher> pageTeacher = new Page<>(current,limit);
        //构架wrapper条件
        QueryWrapper<EduTeacher> wrapper = new QueryWrapper<>();
        //多条件组合查询(动态sql)
        //判断条件值是否为空,如果不为空,则拼接条件
        String name = teacherQuery.getName();
        Integer level = teacherQuery.getLevel();
        String begin = teacherQuery.getBegin();
        String end = teacherQuery.getEnd();
		//stringutils是import org.springframework.util.StringUtils;包中的
        if (!StringUtils.isEmpty(name)){
            //构建条件
            wrapper.like("name",name);
        }
        if (!StringUtils.isEmpty(level)){
            wrapper.eq("level",level);
        }
        if (!StringUtils.isEmpty(begin)){
            wrapper.ge("gmt_create",begin);//字段名称
        }
        if (!StringUtils.isEmpty(end)){
            wrapper.le("gmt_create",end);
        }

        //调用方法,实现条件查询分页
        teacherService.page(pageTeacher,wrapper);

        long total = pageTeacher.getTotal();//总记录数
        List<EduTeacher> records = pageTeacher.getRecords();//数据的list集合
        return R.ok().data("total",total).data("rows",records);
    }

讲师添加功能

1. 需要自动填充创建时间以及修改时间

在service_base中创建包handler创建自动填充类MyMetaObjectHandler,重写其中的两个方法

package com.sli.servicebase.handler;

import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;
import java.util.Date;

/**
 * @author 1_f_
 * @create 2021-10-16 17:21
 */
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
    @Override
    public void insertFill(MetaObject metaObject) {
        //此处传递的实体类是属性名称,不是表中的字段名称
        this.setFieldValByName("gmtCreate", new Date() , metaObject);
        this.setFieldValByName("gmtModified", new Date() , metaObject);
    }

    @Override
    public void updateFill(MetaObject metaObject) {
        this.setFieldValByName("gmtModified", new Date() , metaObject);
    }
}

2. 在实体类添加自动填充注解

image

3. controller中定义方法

//添加讲师的接口
    @ApiOperation(value = "添加讲师")
    @PostMapping("addTeacher")
    public R addTeacher(@RequestBody EduTeacher eduTeacher){
        boolean save = teacherService.save(eduTeacher);
        if (save){
            return R.ok();
        }else {
            return R.error();
        }
    }

    //修改讲师的接口,根据id查询,然后修改
    //1.根据id查询
    @ApiOperation(value = "根据id查询讲师")
    @GetMapping("getTeacher/{id}")
    public R getTeacher(@PathVariable String id){
        EduTeacher eduTeacher = teacherService.getById(id);
        return R.ok().data("teacher",eduTeacher);
    }

    //讲师修改功能
    @ApiOperation(value = "修改讲师")
    @PostMapping("updateTeacher")
    public R updateTeacher(@RequestBody EduTeacher eduTeacher){
        boolean flag = teacherService.updateById(eduTeacher);
        if (flag){
            return R.ok();
        }else {
            return R.error();
        }
    }

查询用get请求 添加用post请求 修改用put 删除用delete

标签:03,分页,value,查询,pageTeacher,讲师,public
来源: https://www.cnblogs.com/sli1f/p/15417717.html