1. 程式人生 > 其它 >實戰專案-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);
    }

多條件組合查詢帶分頁

頁面類似

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中增加方法)

  • RequestBody 需要使用post的提交方式,使用json傳遞資料,將json資料封裝到對應的物件裡面(往裡面傳),通俗點說就是接收前端傳遞給後端的json字串中的資料的(請求體中的資料的)
  • ResponseBody 將java物件轉為json的格式,通俗點說就是往前端傳輸需要的json資料
//條件查詢帶分頁
    @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. 在實體類新增自動填充註解

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