前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SpringBoot实体类中的常用注解

SpringBoot实体类中的常用注解

原创
作者头像
Java学术趴
发布2022-06-26 21:19:51
3.8K0
发布2022-06-26 21:19:51
举报
文章被收录于专栏:Java全栈·

👨‍🎓作者:Java学术趴 🏦仓库:GithubGitee ✏️博客:CSDN掘金InfoQ云+社区 🚫特别声明:原创不易,未经授权不得转载或抄袭,如需转载可联系小编授权。 🙏版权声明:文章里的部分文字或者图片来自于互联网以及百度百科,如有侵权请尽快联系小编。

☠️每日毒鸡汤:这个社会是存在不公平的,不要抱怨,因为没有用!人总是在反省中进步的!

👋大家好!我是你们的老朋友Java学术趴

2. SpringBoot实体类中的注解

2.1 lombok中的注解

2.1.1 @Getter/@Setter

@Getter/@Setter : 注解在类上, 为类提供读写属性。

2.1.2 @ToString

@ToString : 注解在类上, 为类提供 toString() 方法。

2.1.3 @EqualsAndHashCode

@EqualsAndHashCode : 注解在类上, 为类提供 equals() 和 hashCode() 方法。

在类是继承父类的情况下,EqualsAndHashCode实则就是在比较两个对象的属性;

  • @EqualsAndHashCode(callSuper = false) 时不会比较其继承的父类的属性可能会导致错误判断;
  • @EqualsAndHashCode(callSuper = true) 时会比较其继承的父类的属性;
2.1.4 @NoArgsConstructor

@NoArgsConstructor :注解在实体类上, 为类提供无参构造方法。

2.1.5 @RequiredArgsConstructor

@RequiredArgsConstructor :注解在实体类上,提供有指定参数的构造方法。

2.1.6 @AllArgsConstructor

@AllArgsConstructor : 注解在实体类上,提供全参构造方法。

2.1.7 @NonNull

@NonNull : 注解在参数上, 如果获取到的这个参数为 null , 就会报出异常, throw new NullPointException(参数名)。 注意 :这个注解是注释在实体类的属性上,而不是实体类上。

2.1.8 @Data

@Data :@Data相当于@Getter @Setter @RequiredArgsConstructor @ToString @EqualsAndHashCode这5个注解的合集。写这一个注解就不用写其中包含的这5个注解了。

注意:使用@Date会生成一无参构造方法,如果想在加一个有参构造方法,需要添加 @AllArgsConstructor 注解。

2.1.9 @Builder

@Builder : 注解在实体类上, 为类提供一个内部的 Builder。

2.1.10 @Synchronized

@Synchronized : 注解在方法上, 为方法提供同步锁。 注意:这个是注解在方法上,而不是类上。

2.1.11 @Log4j

@Log4j : 注解在各个层,提供一个属性名为 log 的 log4j 的日志对象。之后就可以在任何地方直接使用log.info()打印日志。

以前使用打印日志,必须先创建一个打印日志的Logger对象,调用Logger对象中的info()方法进行打印。

代码语言:javascript
复制
private final Logger logger = LoggerFactory.getLogger(当前类名.class);
logger.info("方法被触发了");

加入了@Log4j注解之后,直接使用 log.info() 方法打印日志信息

代码语言:javascript
复制
log.info("方法被触发了");
2.1.12 @Slf4j

@Slf4j : 注解在各个层,提供一个属性名为 log 的 Slf4j 的日志对象。他的用法和上面的@Log4一样。

2.1.13 @Accessors

@Accessors : Accessor的中文含义是存取器。这个注解是针对实体类中的 getter与setter方法而言的。

包含的属性:

fluent属性:参数值为true/false

  • 默认为false,当设置为true时,表示生成的setter和getter方法没有前缀set和get,且setter方法返回的是当前对象。
代码语言:javascript
复制
@Data
@Accessors(fluent = true)
public class Person {
    private int id;
    private String name;
    
    // 生成的getter和setter方法如下,方法体略
    // getter省略了get
    public int id() {}
    // setter省略了set,并且返回值是:Person对象
    public Person id(int id) {}
 
    public String name() {}
    public Person name(String name) {}
}
  • getter方法不是getId(){},而是id(){};
  • setter方法不是void setId(){},而是Person id(int id){}

chain属性:参数值为true/false

  • 默认为false (注:但是当fluent为true时,其默认为true) ,当为false的时候,生成的setter方法是void类型;如果设置为true生成的setter方法返回this(当前对象)。
代码语言:javascript
复制
@Data
@Accessors(chain = true)
public class Person {
    private int id;
    private String name;
    
    // 生成的setter方法如下,方法体略
    public Person setId(int id) {}
    public Person setName(String name) {}
}

这样写的好处:

  • 以前实体类的setter()方法返回值是:void。当给实体类中的多个参数赋值的时候必须分开写,很麻烦。 Person.setName("张三"); Person.setAge(20);
  • 使用 @Accessors(chain = true) 之后,setter()方法的返回值是该实例对象,所以此时可以连续调用setter() Person.setName("张三").setAge(20);

prefix属性:参数为String类型

  • 可以指定前缀,生成getter和setter方法时会去掉指定的前缀(遵守驼峰命名)
代码语言:javascript
复制
@Data
@Accessors(prefix = "zqr")
class Person {
    private int zqrId;
    private String zqrName;
 
    // 生成的getter和setter方法如下,方法体略
    public int getId() {}
    public void setId(int id) {}
 
    public String getName() {}
    public void setName(String name) {}
}

相当于字符串截取功能,在生成getter和setter方法的时候,会自动截取去除指定前缀,然后加上get与set;

如上代码,生成的不是getZqrId(),而是getId()。遵守驼峰命名规则。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 2. SpringBoot实体类中的注解
    • 2.1 lombok中的注解
      • 2.1.1 @Getter/@Setter
      • 2.1.2 @ToString
      • 2.1.3 @EqualsAndHashCode
      • 2.1.4 @NoArgsConstructor
      • 2.1.5 @RequiredArgsConstructor
      • 2.1.6 @AllArgsConstructor
      • 2.1.7 @NonNull
      • 2.1.8 @Data
      • 2.1.9 @Builder
      • 2.1.10 @Synchronized
      • 2.1.11 @Log4j
      • 2.1.12 @Slf4j
      • 2.1.13 @Accessors
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档