SpringBoot+MyBatis
SpringBoot+MyBatis
  SpringBoot
    入门
      项目创建
        Spring initializr创建项目
          官网搭建项目
          IDEA脚手架搭建项目
        Spring CLI
      项目结构
        pom.xml
        @SpringBootApplication
          项目启动入口
          @Configuration
          @EnableAutoConfiguration
          @ComponentScan
      项目启动
        IDEA开发工具启动
        命令行启动
          mvn命令行直接启动
          java -jar 启动
      热部署
        Spring Boot DevTools
      全局配置文件
        properties配置文件
        yaml配置文件
        修改启动端口号
          配置文件修改
          命令行修改
        优先级
          命令行 > properties > yaml
    常用注解
      REST 控制器声明
        @RestController
          @Controller
          @ResponseBody
      HTTP 请求处理注解
        @RequestMapping
        @GetMapping
        @PostMapping
      HTTP 请求参数注解
        路径参数 /user/{id}
          @PathVariable
        查询参数 /user?name={uname}
          @RequestParam
        body体参数
          @RequestBody
      服务层组件声明
        @Service
          一定要声明在实现类上
      组件注入
        @Autowired
          注入组件为接口对象
        @Qualifier
        @Primary
      属性值获取
        @Value
    统一响应模版
      R<T>
        private int code;
        private String message;
        private T data;
        ok()
        error()
        status(int code)
        data(T value)
      enum ResultCode
        private int code;
        private String message;
        SUCCESS(1, "成功")
    统一异常处理
      @RestControllerAdvice
      @ExceptionHandler
      自定义异常类
        UserNotFoundException
    Swagger API
      spring.mvc.pathmatch.matching-strategy=ANT_PATH_MATCHER
      @Api
        请求类上，表示对类的说明
      @ApiOperation
        请求类的方法上，说明方法的用途和作用
        @ApiOperation(value = "通过ID获取用户", notes = "通过ID返回单个用户", response = User.class)
      @ApiParam
        用在方法，描述请求体信息
        getUsers(@ApiParam(value = "Page number", required = true, example = "1") @RequestParam int page)|
      @ApiResponses
        springfox.documentation.swagger.v2.use-model-v3=false
      @ApiModel
        @ApiModel(description = "User object")
public class User{...}
      @ApiModelProperty
        描述属性，包括名称、类型、描述、是否必需等信息
        @ApiModelProperty(value = "User name", example = "John Doe", required = true)
private String name;
  MyBatis
    插件生成mapper
    dao层的Mapper使用@Repository
  实体类
    dto
      controller层使用
      直接和前端交互的实体类
      避免了在不同层之间直接传递实体类带来的一些问题
        字段暴露
        依赖问题
      方便地扩展新字段，而不会影响原有的实体类结构。
    entity
      Mapper/dao层使用
      数据库表映射的实体类
      都继承BaseEntityNew，可序列化
    converter
      dto与entity实体类之间的转换
      mapstruct
  调用关系
    controller ---> service
      使用的实体类为dto
    service ---> mapper/dao
      使用的实体类为entity
      实体类转换在service层