问题复现
新增laowang的用户,若employee表中之前已存在,那么执行会报错
后台异常
问题分析
查看数据库employee表发现username设置了约束
解决方案
通过异常处理器进行统一处理GlobalExceptionHandler
@ExceptionHandler(SQLIntegrityConstraintViolationException.class)
public Result handleSQLIntegrityConstraintViolationException(SQLIntegrityConstraintViolationException ex){
// 异常的具体信息 Duplicate entry 'laohei' for key 'idx_username'
// 根据内容找到
String exMsg = ex.getMessage();
String info = exMsg.split(" ")[2];
return Result.error(info+" "+ MessageConstant.RESULT_EXISTS);
}
在常量类中定义常量 MessageConstant.RESULT_EXISTS
public static final String RESULT_EXISTS = "已存在";
注意使用的时候添加相关注解
@RestControllerAdvice
@ExceptionHandler(SQLIntegrityConstraintViolationException.class)