Java知识点笔记


树型表的标记字段是什么?如何查询MySQL树型表?

树型表的标记字段是parentId,即父节点的id

查询一个树型表的方法:

  • 档层级固定时可以用表的自键进行查询
  • 如果想灵活查询每一层可以使用mysql递归方法,使用with RECURSIVE实现

Mybatis的ResultTypeResultMap的区别是什么?

ResultType:指定映射类型,只要查询的字段名和类型的属性名匹配就可以自动映射。

ResultMap:自定义映射规则,当查询的字段名和映射类型的树型不匹配时可以通过ResultMap自定义映射规则,也可以实现一对一,一对多映射。

#{}${}有什么区别

#{}是一个标记占位符,可以防止sql注入

${}可用于在动态sql中拼接字符串,可能导致sql注入

项目中如何进行异常处理

自定义一个统一的异常处理器去捕获并处理异常,使用控制器增加注解@ControllerAdvice和异常处理注解@ExceptionHandler来实现

  1. 处理自定义异常

    程序在编写代码时根据校验结果主动抛出自定义异常类对象,抛出异常时指定详细的异常信息,异常处理器捕获异常信息记录异常日志并相应给用户

  2. 处理未知异常

    接口执行过程中的一些运行时异常也会有异常处理器统一捕获,记录异常日志,统一相应给用户500错误

在异常处理器中还可以针对某个异常类型进行单独处理。

@Slf4j
@ResponseBody
@ControllerAdvice(annotations = {RestController.class, Controller.class})
public class GlobalExceptionHandler {

    @ResponseBody
    @ExceptionHandler(XueChengPlusException.class)
    @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
    public RestErrorResponse customException(CustomException e) {
        log.error("【系统异常】{}", e.getErrMessage(), e);
        return new RestErrorResponse(e.getErrMessage());

    }

    @ResponseBody
    @ExceptionHandler(Exception.class)
    @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
    public RestErrorResponse exception(Exception e) {
        log.error("【系统异常】{}", e.getMessage(), e);
        return new RestErrorResponse(CommonError.UNKOWN_ERROR.getErrMessage());
    }

}

请求参数的合法性校验是怎么做的?

使用基于JSR-303的校验框架实现,SpringBoot提供了JSR-303的支持,即spring-boot-starter-validation,它包括了很多校验规则,只需要在模型类中通过注解指定校验规则,在Controller方法开启校验即可实现。


文章作者: youzg
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 youzg !
评论
  目录