@Data
创建实体类时,加上@Data会帮助我们省去大量的getter,setter方法。会自动帮我们生成getter,setter,同时还有toString,equals方法。
使用方法,仅在idea中的使用方法:
在类上直接加上@Data,导入依赖,下载lombok插件。
在maven库中添加依赖
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.10</version>
</dependency>
@EqualsAndHashCode:
默认情况下,会使用所有非瞬态(non-transient)和非静态(non-static)字段来生成equals和hasCode方法,也可以指定具体使用哪些属性。
@Getter/@Setter:
可以作用在类上和属性上,放在类上,会对所有的非静态属性生产Getter/Setter方法,放在属性上,会对该属性生成Getter/Setter方法。并可以指定Getter/Setter方法的访问级别。
@NoArgsConstructor, @RequiredArgsConstructor and @AllArgsConstructor:
无参构造器,部分参数构造器,全参构造,当我们需要重载多个构造器时候,Lombok就无能为力了。
当我们在serviceImpl层引入dao层时可以用该注解帮我们为private final XxxxMapper xxxxMapper;在构造器中赋予初始值;
@ToString:
生成toString方法,默认情况下,会输出类名、所有属性,属性会按照顺序输出,以逗号分割。
Lombok原理:
运行时解析:
运行时能够解析的注解,必须将@Retention设置为RUNTIME,这样可以通过反射拿到该注解。java.lang.reflect反射包中提供了一个接口AnnotatedElement,该接口定义了获取注解信息的几个方法,Class、Constructor、Field、Method、Package等都实现了该接口,大部分开发者应该都很熟悉这种解析方式。
Lombok问题/不足:
无法支持多个构造方法的重载。
@GetMapping:处理get请求,传统的RequestMapping来编写应该是@RequestMapping(value = “/get/{id}”, method = RequestMethod.GET)
@PostMapping: 处理post请求,传统的RequestMapping来编写应该是@RequestMapping(value = “/get/{id}”,method = RequestMethod.POST)
@PutMapping:和PostMapping作用等同,都是用来向服务器提交信息。如果是添加信息,倾向于用@PostMapping,如果是更新信息,倾向于用@PutMapping
@DeleteMapping: 删除URL映射
@PatchMapping:参考数据库的update
网友评论