实体类常用注解
@Data : 注在类上,提供类的get、set、equals、hashCode、canEqual、toString方法
@AllArgsConstructor : 注在类上,提供类的全参构造
@NoArgsConstructor : 注在类上,提供类的无参构造
@Setter : 注在属性上,提供set方法
@Getter : 注在属性上,提供get方法
@EqualsAndHashCode : 注在类上,提供对应的equals 和 hashCode方法
@Log4j/@Slf4j : 注在类上,提供对应的Logger对象,变量名为log
Controller层常用注解
@Postmapping
如果执行添加操作, 后面的添加请求不会覆盖前面的请求, 所以使用@Postmapping
@PutMapping
如果执行修改操作, 后面的修改请求会把前面的请求给覆盖掉, 所以使用@PutMapping
@PatchMapping
Patch方式是对put方式的一种补充;
put方式是可以更新.但是更新的是整体.patch是对局部更新;
@DeleteMapping
@DeleteMapping注解用于处理HTTP DELETE请求,并将请求映射到删除方法中。
@RestController
@RestController相当于是@Controller和@ResponseBody的组合注解。
@Controller:@Controller标识的类,该类代表控制器类(控制层/表现层)。这里控制层里面的每个方法,都可以去调用@Service标识的类(业务逻辑层),@Service标识的类中的方法可以继续调用@Resposity标识的接口实现类(Dao层/持久层)
**@ResponseBody:**会自动将控制器中方法的返回值写入到HTTP响应中。用@ResponseBody标记Controller类中的方法,把return的结果变成JSON对象返回。(如果没有这个注解,这个方法只能返回要跳转的路径即跳转的html/JSP页面。有这个注解,可以不跳转页面,只返回JSON数据)
@PathVariable
@PathVariable注解是将方法中的参数绑定到请求URI中的模板变量上。可以通过@RequestMapping注解来指定URI的模板变量,然后使用@PathVariable注解将方法中的参数绑定到模板变量上。特别地,@PathVariable注解允许我们使用value或name属性来给参数取一个别名。
- 通过 @PathVariable 可以将 URL 中占位符参数绑定到控制器处理方法的入参中:URL 中的 {xxx} 占位符可以通过@PathVariable(“xxx“) 绑定到操作方法的入参中。
提示:如果参数是一个非必须的,可选的项,则可以在@PathVariable
中设置require = false
@RequestParam
该注解的其他属性配置与@PathVariable
的配置相同,特别的,如果传递的参数为空,还可以通过defaultValue设置一个默认值。
@RequestParam注解有三个参数
-
required
表示是否必须,默认为 true
,必须。
-
defaultValue
可设置请求参数的默认值,如果设置了该值,required=true将失效,自动为false,如果没有传该参数,就使用默认值。
-
value
为接收url的参数名(相当于key值)。
@RequestParam , 是获取前端传递给后端的参数,可以是get方式,也可以是post方式。其中如果前端传递的参数和后端你接受的参数起的名字字段是一致的可以省略不写,也可以直接写@RequestParam String title,如果不一致一定要完整写,
http://localhost:8080/books?isbn=1234
@GetMapping("/books/")
public Book getBookDetails(@RequestParam("isbn") String isbn) {
@RequestBody
主要用来接收前端传递给后端的json字符串中的数据的(请求体中的数据的);
@RequestBody 用在方法参数上面,用来将请求参数绑定到request body中,通过HttpMessageConverter
封装为具体的JavaBean。通俗点讲就是你在一个参数上加上该注解,spring就会将request body中的json/xml对象解析成该参数类型的Javabean对象。
GET方式无请求体,所以使用@RequestBody接收数据时,前端不能使用GET方式提交数据,而是用POST方式进行提交。
在后端的同一个接收方法里,@RequestBody与@RequestParam()可以同时使用,@RequestBody最多只能有一个,而@RequestParam()可以有多个。