当前位置: 首页 > article >正文

项目踩坑之面试遇到的问题及解决

第一点:

问题

遇到的问题之:在实现后台管理端-账户操作的时候,添加员工的时候如果重复添加同一个员工,会触发一个数据库唯一约束异常,但客户端无法清晰的理解这个错误,所以我们就对新增员工的代码进行try catch,但同时带来一个问题,代码量一旦上来就不可行。

解决:

这里我们使用SpringAop思想实现全局异常拦截处理,从而对异常的统一处理。

当报错信息出现Duplicate entry时,就意味着新增员工异常了 所以,我们对异常类的方法进行一些小改动,让这个异常反馈变得更人性化 这个时候再来客户端试试,就会提供人性化的报错,非常的快乐~,更加人性化,体验更好。

实现代码:

//@RestControllerAdvice包括了下面两行
@ControllerAdvice(annotations = {RestController.class, Controller.class})
@ResponseBody
@Slf4j
public class GlobalExceptionHandler {
 
    /**
     * 异常处理方法
     * @return
     */
    //捕获完整性约束违反异常(其实就是数据库唯一约束异常)SQLIntegrityConstraintViolationException
    @ExceptionHandler(SQLIntegrityConstraintViolationException.class)
    public R<String> exceptionHandler(SQLIntegrityConstraintViolationException ex){
        log.error(ex.getMessage());
 
        if(ex.getMessage().contains("Duplicate entry")){
            return R.error("唯一约束异常:"+exception.getMessage().split(" ")[2]+"已存在");
        }
 
        return R.error("未知唯一约束错误");
    }
}

这回再回到Controller,这时就不需要再来try catch这种形式了,不用管他,因为一旦出现错误就会被我们的AOP捕获。所以,不需要再用try catch来抓了

第二点

问题:

启用禁用员工账号,js主键丢失精度问题

只有管理员账号有禁用启用按钮:

前端如何判断当前用户是admin?缓存:local Storage里面

点击禁用后发送请求:

js丢失long精度问题

Long类型id是19位,而js只能处理17位数字,Long类型主键从前端传回后端丢失精度,导致传到后端的id和数据库id不一致:

解决方案:

实体类注解@JsonFormat

实现代码:

在员工的主键上面加上@JsonFormat

  @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Long id;


http://www.kler.cn/a/133143.html

相关文章:

  • 车载诊断架构 --- 关于DTC的开始检测条件
  • 进程信号
  • 从零开始学习 sg200x 多核开发之 uboot 网络功能使能
  • 速盾:cdn 支持 php 吗?
  • outline 分析
  • 政务数据治理专栏开搞!
  • 自动化网络图软件
  • 企业邮箱认证指南:安全与高效的邮箱认证方法
  • 达梦数据库常用参数查询
  • 抗击.Elbie勒索病毒:如何应对.Elbie病毒威胁,保卫您的数据
  • “可信区块链运行监测服务平台TBM发展研讨会”将于11月23日在北京召开
  • 【Linux网络】ssh服务与配置,实现安全的密钥对免密登录
  • python趣味编程-5分钟实现一个益智数独游戏(含源码、步骤讲解)
  • 策略模式在数据接收和发送场景的应用(升级版)
  • rollout
  • 指针——C语言初阶
  • Spring底层原理学习笔记--第十一讲--(aop之proxy增强-jdk及aop之proxy增强-cglib)
  • 使用 Hugging Face Transformer 微调 BERT
  • ElasticStack日志分析平台-ES 集群、Kibana与Kafka
  • 获取虎牙直播源
  • 什么是CDN?什么是安全加速CDN?有什么优势?
  • 【AD封装】芯片IC-SOP,SOIC,SSOP,TSSOP,SOT(带3D)
  • 企业数字化转型的好处?_光点科技
  • SELinux零知识学习十八、SELinux策略语言之类型强制(3)
  • ubuntu 无法获得锁的解决
  • 读像火箭科学家一样思考笔记02_与不确定性共舞(下)