2022.06.29
D:\A-File\技术\JAVA\尚硅谷硅谷课堂项目
工程目录结构

讲师管理接口
后台管理系统-讲师管理接口

查询和删除
查询所有讲师、删除讲师
/*** 讲师 前端控制器* @author atguigu*/@RestController@RequestMapping(value="/admin/vod/teacher")public class TeacherController {@Autowiredprivate TeacherService teacherService;//查询所有讲师列表@GetMapping("findAll")public List<Teacher> findAll(){List<Teacher> list = teacherService.list();return list;}//删除讲师@DeleteMapping("remove/{id}")public boolean removeById(@PathVariable String id){return teacherService.removeById(id);}}
测试删除接口
删除讲师接口是delete提交方式,使用浏览器无法直接访问测试,可以通过工具测试,比如Postman,我们这里通过整合Swagger2进行接口测试
前后端分离开发模式中,api文档是最好的沟通方式。Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。及时性 (接口变更后,能够及时准确地通知相关前后端开发人员)规范性 (并且保证接口的规范性,如接口的地址,请求方式,参数及响应格式和错误信息)一致性 (接口信息一致,不会出现因开发人员拿到的文档版本不一致,而出现分歧)可测性 (直接在接口文档上进行测试,以方便理解业务)

统一返回结果对象
项目中我们会将响应封装成json返回,一般我们会将所有接口的数据格式统一, 使前端(iOS Android, Web)对数据的操作更一致、轻松。
import io.swagger.annotations.ApiModel;import io.swagger.annotations.ApiModelProperty;import lombok.Data;/*** 全局统一返回结果类**/@Data@ApiModel(value = "全局统一返回结果")public class Result<T> {@ApiModelProperty(value = "返回码")private Integer code;@ApiModelProperty(value = "返回消息")private String message;@ApiModelProperty(value = "返回数据")private T data;public Result(){}public static <T> Result<T> build(T body, Integer code, String message) {Result<T> result = new Result<T>();if (body != null) {result.setData(body);}result.setCode(code);result.setMessage(message);return result;}public static<T> Result<T> ok(){return Result.ok(null);}/*** 操作成功* @param data baseCategory1List* @param <T>* @return*/public static<T> Result<T> ok(T data){return build(data,200,"成功");}public static<T> Result<T> fail(){return Result.fail(null);}/*** 操作失败* @param data* @param <T>* @return*/public static<T> Result<T> fail(T data){return build(data, 201,"失败");}public Result<T> message(String msg){this.setMessage(msg);return this;}public Result<T> code(Integer code){this.setCode(code);return this;}}
了解:泛型,Data注解,json的对象和数组两种格式
@Api(tags = "讲师管理接口")@RestController@RequestMapping(value="/admin/vod/teacher")public class TeacherController {@Autowiredprivate TeacherService teacherService;// http://localhost:8301/admin/vod/teacher/findAll//1 查询所有讲师@ApiOperation("查询所有讲师")@GetMapping("findAll")public Result findAllTeacher() {//调用service方法List<Teacher> list = teacherService.list();return Result.ok(list).message("查询数据成功");}// remove/1//2 逻辑删除讲师@ApiOperation("逻辑删除讲师")@DeleteMapping("remove/{id}")public Result removeTeacher(@ApiParam(name = "id", value = "ID", required = true)@PathVariable Long id) {boolean isSuccess = teacherService.removeById(id);if(isSuccess) {return Result.ok(null);} else {return Result.fail(null);}}}
分页条件查询讲师
/*** 配置类*/@Configuration@MapperScan("com.atguigu.ggkt.vod.mapper")public class VodConfig {/*** 分页插件*/@Beanpublic PaginationInterceptor paginationInterceptor() {return new PaginationInterceptor();}}/////////////////////////创建查询条件对象@Datapublic class TeacherQueryVo {@ApiModelProperty(value = "讲师姓名")private String name;@ApiModelProperty(value = "头衔 1高级讲师 2首席讲师")private Integer level;@ApiModelProperty(value = "入驻时间")private String joinDateBegin;@ApiModelProperty(value = "入驻时间")private String joinDateEnd;}/////////////////////////条件查询分页列表@ApiOperation(value = "获取分页列表")@PostMapping("{page}/{limit}")public Result index(@ApiParam(name = "page", value = "当前页码", required = true)@PathVariable Long page,@ApiParam(name = "limit", value = "每页记录数", required = true)@PathVariable Long limit,@ApiParam(name = "teacherVo", value = "查询对象", required = false)@RequestBody(required = false) TeacherQueryVo teacherQueryVo) {//创建page对象,传递当前页和每页记录数Page<Teacher> pageParam = new Page<>(page, limit);//获取条件值String name = teacherQueryVo.getName();//讲师名称Integer level = teacherQueryVo.getLevel();//讲师级别String joinDateBegin = teacherQueryVo.getJoinDateBegin();//开始时间String joinDateEnd = teacherQueryVo.getJoinDateEnd();//结束时间//封装条件QueryWrapper<Teacher> wrapper = new QueryWrapper<>();if(!StringUtils.isEmpty(name)) {wrapper.like("name",name);}if(!StringUtils.isEmpty(level)) {wrapper.eq("level",level);}if(!StringUtils.isEmpty(joinDateBegin)) {wrapper.ge("join_date",joinDateBegin);}if(!StringUtils.isEmpty(joinDateEnd)) {wrapper.le("join_date",joinDateEnd);}//调用方法得到分页查询结果IPage<Teacher> pageModel = teacherService.page(pageParam, wrapper);return Result.ok(pageModel);}
修改讲师
//编写id查询方法
@ApiOperation(value = "获取")
@GetMapping("get/{id}")
public Result get(@PathVariable Long id) {
Teacher teacher = teacherService.getById(id);
return Result.ok(teacher);
}
//编写修改方法
@ApiOperation(value = "修改")
@PutMapping("update")
public Result updateById(@RequestBody Teacher teacher) {
teacherService.updateById(teacher);
return Result.ok(null);
}
批量删
@ApiOperation(value = "根据id列表删除")
@DeleteMapping("batchRemove")
//传入json的数组格式,如[1,2]
public Result batchRemove(@RequestBody List<Long> idList) {
teacherService.removeByIds(idList);
return Result.ok(null);
}
统一异常处理(全局)

前端
VSCode 输入 !会出现基本代码块
ES6语法

Vue语法和基础
讲师前端开发

