1.1 用户列表展现
1.2 用户状态修改 1.2.1 业务说明 说明: 点击页面开关,修改数据表中的status 知识点讲解: 1. 数据库中没有boolean类型 可以使用数值类型代替 true 代替数值1, false 代替数值0 2. 数据库中可以使用tinyint类型代替boolean. 并且2种类型可以自动转化.
2. 业务辅助功能
2.1 事务控制 2.1.1 现象说明 说明: 业务逻辑在执行的过程中,如果中间发生了异常,应该保证事务的一致性.事务应该回滚.但是经过测试,发现执行报异常,但是数据可以正常的入库. 说明方法没有事务的控制.
2.1.2 关于注解说明 名称: @Transactional //事务的注解 特点: 1.Spring中默认对事务进行支持. 2.Spring中默认控制的是运行时异常. 如果是检查异常 Spring不负责处理.
核心原理: AOP
常见案例: @Transactional(rollbackFor = Exception.class) 只要有异常,则全部回滚.
问题: 如果采用上述的代码,则AOP拦截所有的异常,运行效率低. 所以一般只拦截运行时异常.检查异常由程序员手动控制. ?
总结: 以后操作数据库时 ,新增/删除/修改操作 需要事务控制.
2.2 全局异常处理机制
2.2.1 业务说明
当用户在进行业务操作时,不管后端服务器执行是否正确,都应该给用户一个正向的回馈!!! 解决方案:
@PutMapping("/status/{id}/{status}")
public SysResult updateStatus(User user){
try {
userService.updateStatus(user);
return SysResult.success();
}catch (Exception e){
e.printStackTrace();
return SysResult.fail();
}
}
暴露问题: 由于在每个方法中都需要添加try-catch代码 必然会导致代码的可读性低.并且代码繁琐.不便于扩展.
2.2.2 全局异常处理机制实现
package com.jt.aop;
import com.jt.vo.SysResult;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
@RestControllerAdvice //advice 通知!!!
//全局异常处理机制,只拦截Controller层
public class SystemException {
//指定异常的类型进行拦截.
@ExceptionHandler(RuntimeException.class)
public SysResult exception(Exception e){
e.printStackTrace();//控制台打印异常
return SysResult.fail();//201
}
}
|