讲师接口管理 统一异常处理器

一 讲师接口管理(会写)

1.查询所有讲师
	c.前端页面显示的数据差8个小时
		@ResponseBody作用 把对象转换为json 这个过程丢失了时区
		spring.jackson.time-zone=GMT+8
		spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
2.删除讲师(逻辑删除)
3.接入swagger
	a.作用
		主要作用是帮助开发阶段编写接口文档
		还可以帮你生成接口
	b.访问地址
		http://127.0.0.1:8000/swagger-ui.html
		需要开启配置 直接拷贝配置类 可能需要rebuild项目 才能生效
		(@EnableSwagger2)	
	c.注解
		https://blog.csdn.net/wyb880501/article/details/79576784
4.统一结果集
	5.讲师列表分页查询
	注意添加分页插件
6.讲师列表分页查询带条件
	a.把查询条件封装成为一个类
	b.为什么单独封装一个类
		把所以字段都相当于暴露出去
		有些字段 实体映射类没有相关字段
7.Java中的各种O
	a.PO
		持久化对象,可以简单的理解为一个PO实例对应数据库中的一条记录
	b.VO
		视图层数据,通常用于封装页面上要展示的数据,和页面要传递给后端的数据
	c.DTO
		封装服务与服务之间、分层与分层之间要传输的数据
	d.BO
		通常对应业务模型,封装业务数据
	e.POJO
		对象拥有属性及属性对于的getter和setter
8.添加讲师
9.修改讲师
10.根据id查询讲师
11.restful风格编码格式:
	get:查询
	delete:删除
	post:添加
	put:修改

代码:
讲师接口代码

package com.atguigu.edu.controller;


import com.atguigu.edu.entity.EduTeacher;
import com.atguigu.edu.service.EduTeacherService;
import com.atguigu.myException.MyException;
import com.atguigu.result.RetVal;
import com.atguigu.vo.TeacherPageVo;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import javax.crypto.spec.OAEPParameterSpec;
import java.util.List;

/**
 * <p>
 * 讲师 前端控制器
 * </p>
 *
 * @author CaoSenSen
 * @since 2022-06-27
 */
@CrossOrigin
@RestController
@RequestMapping("/edu/teacher")
public class EduTeacherController  {
    @Autowired
    private EduTeacherService teacherService;
    /**
     * 查询所有讲师
     * @return 所有讲师
     */
    @GetMapping
    public RetVal findAllTeachers() {
        List<EduTeacher> teacherList = teacherService.list();
        return RetVal.success().data("teacherList",teacherList);
    }
    /**
     * 根据ID查询讲师
     * @return 所有讲师
     */
    @GetMapping("{id}")
    public RetVal getTeacherById(@PathVariable Long id) {
        EduTeacher teacher = teacherService.getById(id);
        if(teacher != null)
            return RetVal.success().data("teacher",teacher);
        return RetVal.error();

    }
    /**
     * 分页查询(条件)
     * @return 所有讲师
     */
    @PostMapping("/{pageNum}/{pageSize}")
    public RetVal pageConditionTeachers(@PathVariable Long pageNum,
                                        @PathVariable Long pageSize,
                                        @RequestBody TeacherPageVo teacherPageVo) {
        Page<EduTeacher> page = new Page<>(pageNum,pageSize);
        teacherService.pageCondition(teacherPageVo, page);

        return RetVal.success().data("total",page.getTotal()).
                data("teacherList", page.getRecords());
    }
    /**
     * 根据ID删除讲师
     * @return 是否删除成功
     */
    @DeleteMapping("/{id}")
    public RetVal deleteTeacherById(@PathVariable("id") Long id) {
        boolean flag = teacherService.removeById(id);
        if(flag)
        {
            return RetVal.success();
        }
        return RetVal.error();
    }
    /**
     * 根据ID更新讲师
     * @return 是否更新成功
     */
    @PutMapping
    public RetVal updateTeacherById(EduTeacher teacher) {
        boolean flag = teacherService.updateById(teacher);
        if(flag)
        {
            return RetVal.success();
        }
        return RetVal.error();
    }
    /**
     * 插入讲师或者更新讲师
     * @return 是否插入成功
     */
    @PostMapping
    public RetVal saveOrUpdateTeacher(@RequestBody EduTeacher teacher) {
        boolean flag = teacherService.saveOrUpdate(teacher);
        if(flag)
        {
            return RetVal.success();
        }
        return RetVal.error();
    }
}

swagger配置代码

package com.atguigu.edu.config;
import org.springframework.boot.SpringBootConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

@SpringBootConfiguration
@EnableSwagger2
public class SwaggerConfig {
    @Bean
    public Docket webApiConfig(){
        return new Docket(DocumentationType.SWAGGER_2)
                .groupName("webApi")
                .apiInfo(webApiInfo())
                .select()
                .build();
    }
    private ApiInfo webApiInfo(){

        return new ApiInfoBuilder()
                .title("网站-讲师管理API文档")
                .description("本文档描述了讲师管理微服务接口定义")
                .version("1.0")
                .contact(new Contact("Css", "http://atguigu.com", "840473030@qq.com"))
                .build();
    }
}

统一结果集

package com.atguigu.result;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.experimental.Accessors;

import java.util.HashMap;
import java.util.Map;

@Data
@Accessors(chain = true) //开启链式编程
public class RetVal {
    private String message;
    private Integer code;
    private Boolean success;
    private Map<String,Object> data = new HashMap<>();

    private RetVal() {
    }

    public static RetVal success()
    {
        RetVal result = new RetVal();
        result.setCode(RetValCode.OK).setSuccess(true).setMessage("成功");
        return result;
    }

    public static RetVal error()
    {
        RetVal result = new RetVal();
        result.setCode(RetValCode.ERROR).setSuccess(false).setMessage("失败");
        return result;
    }

    public RetVal data(String key,Object value)
    {
        this.data.put(key,value);
        return this;
    }

    public RetVal data(Map<String,Object> data)
    {
        this.setData(data);
        return this;
    }
}

二 统一异常处理器

1.异常的分类
	a.运行时异常
	b.编译时异常
2.你在开发中遇到过那些异常
参考:https://blog.csdn.net/xiaoxijinger/article/details/117668591 
	ConcurrentModificationException 并发修改异常
3.处理异常方式
	a.抛出异常
	b.捕获异常
4.谁帮我们去处理统一异常
	springmvc早就帮我们做了这个事情
	编写一个统一异常处理类
		1.编写步骤:写一个类添加@ControllerAdvice
		2.在想要处理对应异常的方法上添加@ExceptionHandler(xxxx异常.class)
		3.方法接收异常 
		  public RetVal globException(Exception e)
	 	 {
    		e.printStackTrace();
   			 return RetVal.error().setMessage(e.getMessage());
		 }
5.分为三类
	a.全局异常
		Exception
	b.特殊异常
		 特定的异常
	c.自定义异常
		继承RuntimeException方法的类
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值