實戰專案-03(講師的分頁查詢和條件查詢,新增,修改)
阿新 • • 發佈:2021-10-17
講師的分頁查詢
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