@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)自动填充到你的方法参数里
@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作用域的值。
@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 | 与表一一对应的 物理 SQL | SELECT * 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)