1.@RequestParam注解:@RequestParam注解用于从HTTP请求中获取单个参数值
特点:
- 参数可以是必需的或可选的。
- 如果未提供可选参数,则使用默认值。
- 可以指定参数名称,如果未指定,则使用方法参数名称。
例子:
@GetMapping("/hello")
public String hello(@RequestParam(value = "name", defaultValue = "World") String name) {
return "Hello, " + name + "!";
}
上面的例子中@RequestParam
注解定义了一个名为 name
的参数,它的默认值为"World",参数是可选的,当你未提供可选参数,则会使用默认值“World”。
2.@PathVariable注解:@PathVariable注解用于从URI路径中获取参数值
特点:
- 参数不能为空,因为它与URL一起使用。
- 不需要指定参数名称,因为它们从路径中提取。
例子:
@GetMapping("/hello/{name}")
public String hello(@PathVariable String name) {
return "Hello, " + name + "!";
}
上面的例子中@PathVariable
注解定义了一个名为 name
的参数,它从路径中提取获得,当请求 /hello/Tom
时,name
参数的值就是 "Tom"
。这个参数值将会作为 hello()
方法的参数传入。
3.@Param注解:@Param
注解不是Spring框架自带的注解,通常用于MyBatis框架中。它用于从数据库查询语句中获取参数值。
特点:
- 不需要指定参数名称,因为它们从数据库查询语句中提取。
例子:
@Select("SELECT * FROM users WHERE name = #{name}")
User findByName(@Param("name") String name);
上面的例子中@Param
注解定义了一个名为 name
的参数,它会从查询语句中提取。比如,当调用 findByName("Tom")
时,name
参数的值就是 "Tom"
。
总结一下:三个注解都能获取参数,只是他们的作用域和用法不同。@RequestParam
注解用于获取HTTP请求中的参数值,@PathVariable
注解用于获取URI路径中的参数值,而 @Param
注解用于获取数据库查询语句中的参数值。