第九天:职位管理、职称管理、全局异常处理

一.职位管理

(一)职位的常用操作

  • 查询职位
  • 添加职位
  • 更新职位
  • 删除职位

(二)自定义日期格式

1.修改职位实体类

修改:yeb/yeb-server/src/main/java/com/cxy/server/pojo/Position.java文件

image.png

(三)功能实现

1.修改职位控制器

修改:yeb/yeb-server/src/main/java/com/cxy/server/controller/PositionController.java文件

package com.cxy.server.controller;


import com.cxy.server.pojo.Position;
import com.cxy.server.service.IPositionService;
import com.cxy.server.utils.RespBean;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.time.LocalDateTime;
import java.util.Arrays;
import java.util.List;

/**
 * 

* 前端控制器 *

* * @author 陈鑫元 * @since 2021-05-21 */ @RestController @RequestMapping("/system/basic/pos") public class PositionController { @Autowired private IPositionService positionService; @ApiOperation(value = "获取所有职位信息") @GetMapping("/") public List getAllPositions() { return positionService.list(); } @ApiOperation(value = "添加职位信息") @PostMapping("/") public RespBean addPosition(@RequestBody Position position) { position.setCreateDate(LocalDateTime.now()); if (positionService.save(position)) { return RespBean.success("添加成功!"); } return RespBean.error("添加失败!"); } @ApiOperation(value = "更新职位信息") @PutMapping("/") public RespBean upDatePosition(@RequestBody Position position) { position.setCreateDate(LocalDateTime.now()); if (positionService.updateById(position)) { return RespBean.success("更新成功!"); } return RespBean.error("更新失败"); } @ApiOperation(value = "删除单条职位信息") @DeleteMapping("/{id}") public RespBean deletePosition(@PathVariable Integer id) { if (positionService.removeById(id)) { return RespBean.success("删除成功!"); } return RespBean.error("删除失败!"); } @ApiOperation(value = "批量删除职位信息") @DeleteMapping("/") public RespBean deletePositionByIds(Integer[] ids) { if (positionService.removeByIds(Arrays.asList(ids))) { return RespBean.success("删除成功!"); } return RespBean.error("删除失败!"); } }
2.测试功能

查询职位:

image.png

添加职位:

image.png

更新职位:

image.png

删除职位:

image.png

二.职称管理

(一)职称的常用操作

  • 查询职称
  • 添加职称
  • 更新职称
  • 删除职称

(二)自定义日期格式

1.修改职称实体类

修改:yeb/yeb-server/src/main/java/com/cxy/server/pojo/Joblevel.java文件

image.png

(三)功能实现

1.修改职称控制器

修改:yeb/yeb-server/src/main/java/com/cxy/server/controller/JoblevelController.java文件

package com.cxy.server.controller;


import com.cxy.server.pojo.Joblevel;
import com.cxy.server.service.IJoblevelService;
import com.cxy.server.utils.RespBean;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.time.LocalDateTime;
import java.util.Arrays;
import java.util.List;

/**
 * 

* 职称等级表 前端控制器 *

* * @author 陈鑫元 * @since 2021-05-21 */ @RestController @RequestMapping("/system/basic/joblevel") public class JoblevelController { @Autowired private IJoblevelService joblevelService; @ApiOperation(value = "获取所有职称") @GetMapping("/") public List getAllJoblevels() { return joblevelService.list(); } @ApiOperation(value = "添加职称") @PostMapping("/") public RespBean addJoblevel(@RequestBody Joblevel joblevel) { joblevel.setCreateDate(LocalDateTime.now()); if (joblevelService.save(joblevel)) { return RespBean.success("添加成功!"); } return RespBean.error("添加失败!"); } @ApiOperation(value = "更新职称") @PutMapping("/") public RespBean updateJoblevel(@RequestBody Joblevel joblevel) { joblevel.setCreateDate(LocalDateTime.now()); if (joblevelService.updateById(joblevel)) { return RespBean.success("更新成功!"); } return RespBean.error("更新失败!"); } @ApiOperation(value = "删除职称") @DeleteMapping("/{id}") public RespBean deleteJoblevel(@PathVariable Integer id) { if (joblevelService.removeById(id)) { return RespBean.success("删除成功!"); } return RespBean.error("删除失败!"); } @ApiOperation(value = "批量删除职称") @DeleteMapping("/") public RespBean deletaJoblevelByIds(Integer[] ids) { if (joblevelService.removeByIds(Arrays.asList(ids))) { return RespBean.success("删除成功"); } return RespBean.error("删除失败"); } }
2.测试

查询职称:

image.png

添加职称:

image.png

更新职称:

image.png

删除职称:

image.png

三.全局异常处理

我们知道,系统中异常包括:编译时异常和运行时异常 RuntimeException ,前者通过捕获异常从而获取异常信息,后者主要通过规范代码开发、测试通过手段减少运行时异常的发生。在开发中,不管是dao层、service层还是controller层,都有可能抛出异常,在SpringMVC中,能将所有类型的异常处理从各处理过程解耦出来,既保证了相关处理过程的功能较单一,也实现了异常信息的统一处理和维护。

(一)SpringBoot全局异常处理方式主要两种:

  • 使用 @ControllerAdvice@ExceptionHandler注解。
  • 使用 ErrorController 类 来实现

(二)区别:

  1. @ControllerAdvice 方式只能处理控制器抛出的异常。此时请求已经进入控制器中。
  2. ErrorController 类 方式可以处理所有的异常,包括未进入控制器的错误,比如404,401等错误
  3. 如果应用中两者共同存在,则 @ControllerAdvice 方式处理控制器抛出的异常,ErrorController 类 方式处理未进入控制器的异常。
  4. @ControllerAdvice 方式可以定义多个拦截方法,拦截不同的异常类,并且可以获取抛出的异常信息,自由度更大。

(三)增加GlobalException全局异常捕获

新建:
yeb/yeb-server/src/main/java/com/cxy/server/exception文件夹
新建:
yeb/yeb-server/src/main/java/com/cxy/server/exception/GlobalException.java文件

package com.cxy.server.exception;

import com.cxy.server.utils.RespBean;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

import java.sql.SQLException;
import java.sql.SQLIntegrityConstraintViolationException;

/**
 * @author 陈鑫元
 * @description 全局异常处理  *
 * @date 2021-05-28 20:36
 * @since 1.0.0
 */
@RestControllerAdvice
public class GlobalException {
    @ExceptionHandler(SQLException.class)
    public RespBean mySqlException(SQLException e) {
        if (e instanceof SQLIntegrityConstraintViolationException) {
            return RespBean.error("该数据有关联数据或插入数据重复,操作失败!");
        }
        return RespBean.error("数据库异常,操作失败!");
    }
}

(四)测试

image.png

你可能感兴趣的:(第九天:职位管理、职称管理、全局异常处理)