Skip to content

@RestController

@Controller@ResponseBody 的组合注解

通过 @RestController 标记的类会被 Spring 容器识别为控制器,专门处理 HTTP 请求并返回数据(而非视图页面)

@PathVariable注解

动态路径参数绑定 将 URL 中的占位符(如 {id})与控制器方法参数绑定,实现资源标识的动态提取。 ​​示例​​:

@GetMapping("/users/{id}")
public User getUser(@PathVariable Long id) { ... }

请求 /users/123 时,id 参数自动绑定到 123

@RequestParam注解

通过注解 @RequestParam可以轻松的将URL中的参数绑定到处理函数方法的变量 中。

想象你在填写一个网购订单表单,填写完“收货人姓名”和“联系电话”后,系统自动把这些信息填到后台的对应位置。@RequestParam 的作用就是让 Spring Boot 框架扮演这个“自动填表工具”,把用户通过 URL 传递的参数(比如 ?name=张三&phone=123)自动填充到你的方法参数里

java
@GetMapping("/user")
public String getUserInfo(
    @RequestParam("name") String userName  // 自动把 URL 中的 name=张三 绑定到 userName
) {
    return "用户姓名:" + userName;  // 输出:用户姓名:张三
}

@RequestBody注解

@RequestBody 是 Spring MVC 框架中的一个注解,用于将 HTTP 请求的 请求体(Body) 绑定到方法参数上。它通常用于处理 JSON、XML 或表单数据 等格式的请求,是实现 RESTful API 的关键注解之一。

前端传什么格式的数据,我就把它变成什么类型的对象

@RequestAttribute注解

用来标注在接口的参数上,参数的值来源于 request 作用域。 我们使用test1转发,并在request作用域里面存储值。在test2里面的形式 参数里面获取的就是test1方法存储在Request作用域的值。

java
@Controller  public class ParamController { 
     @RequestMapping("/test1")
    public String test1(HttpServletRequest request) {
        request.setAttribute("username", "eric");
        return "forward:/test2";

    }
    @RequestMapping("/test2")
    public String test2(@RequestAttribute("username") String username) {
        System.out.println(username);
        return username; }  }

自定义注解常用元注解

*常见的元注解有姐下: *@Target:描述的是当前注解需要修饰个目标资源。 @Target(ElementType.TYPE)描述当前注解可以修饰类或者接口 @Target(ElementType,EIELD)当游注解可以修饰成员变最 @Target(ElementType.METHOD)当前注解可以修饰方法形参@Target(ElementType,PARAMETER)当前注解可以修饰方达 *Inherited被修饰的注解县有继水性 @Documented指的是被修施的主键可以被javadoc工具提取成文档 奇@Retention 定义注解的生命周期(保留策略) @Rentention(RetentionPolicy.SOURCE)当前主键只会存在源码中 不参与编译,更不会被运行

@Rentention(RetentionPolicy.ClASS)当前主键会参与编洋,但是不会参与运行

@Rentention(RetentionPolicy.RUNTIME)2当前注解既参与编译,也参与运行,在运行时我们可以基于反射的机制获取到该注解信息。

@Service`

Spring 的构造型注解,告诉 Spring 容器:这是一个业务层(Service)组件,需要被扫描并注册为 Bean。

Mapper与Service层

层级关注点例子
Mapper与表一一对应的 物理 SQLSELECT * FROM sys_role WHERE …
Service业务规则、数据加工、权限判断等“若当前用户非超级管理员,则追加部门过滤条件”

Mapper` 只负责“把数据按指定条件从数据库取出来”,不做业务逻辑;真正的逻辑查询(业务规则、数据权限、结果裁剪)放在 Service 层完成。

@TableField(exist = false)

MyBatis-Plus 专用注解。

`(exist = false)` → **注解参数**;给注解的 `exist` 属性赋值 `false`,告诉框架“这个字段在表里不存在”。
if(StringUtils.isNotEmpty(param.getNickName())){
    query.lambda().like(SysUser::getNickName, param.getNickName());
}
步骤代码说明
① 换壳query.lambda()QueryWrapper 转成 LambdaQueryWrapper,开启“方法引用”模式。
② 指定列SysUser::getNickName方法引用 对应数据库列 nick_name
③ 指定值param.getNickName()取前端传来的关键字,比如 "张三"
④ 生成片段.like(...)在内部条件链表追加 LIKE #{nickName},占位符自动加 %

@Autowired

Spring Framework 提供的核心注解,

让 Spring 容器自动把匹配的 Bean 注入到这个字段、构造器或方法参数里

@PathVariable

URL 路径中的那段值 取出来,直接变成方法参数。 一句话:它让 RESTful 路径参数 变成 Java 变量

public ResultVo deleteUser(@PathVariable("userId") Long userId)