? ? 今天在網(wǎng)上看到一個entity實體類的代碼是如下這樣的:
User user = new User()
.setId(1L)
.setUsername("zhangsan")
.setSex(1)
.setPassword("abc123")
.setCreateTime(LocalDateTime.now())
.setBirthday(LocalDate.of(1999, 9, 27))
.setConfig("[{\"field1\":\"Test Field1\",\"field2\":500}]");
一個User實體類對象后面調(diào)用了許多個set方法,這樣寫感覺比每次調(diào)用都在前面加上user來得更加簡潔,于是我去網(wǎng)上找了一下,發(fā)現(xiàn)這種寫法要歸功于Accessors注解。
Accessor的中文含義是存取器,@Accessors用于配置getter和setter方法的生成結(jié)果,下面介紹三個屬性
fluent
fluent的中文含義是流暢的,設置為true,則getter和setter方法的方法名都是基礎屬性名,且setter方法返回當前對象。如下
@Data
@Accessors(fluent = true)
public class User {
? ? private Long id;
? ? private String name;
? ? // 生成的getter和setter方法如下,方法體略
? ? public Long id() {}
? ? public User id(Long id) {}
? ? public String name() {}
? ? public User name(String name) {}
}
chain
chain的中文含義是鏈式的,設置為true,則setter方法返回當前對象。如下
@Data
@Accessors(chain = true)
public class User {
? ? private Long id;
? ? private String name;
? ? // 生成的setter方法如下,方法體略
? ? public User setId(Long id) {}
? ? public User setName(String name) {}
}
prefix
prefix的中文含義是前綴,用于生成getter和setter方法的字段名會忽視指定前綴(遵守駝峰命名)。如下
@Data
@Accessors(prefix = "p")
class User {
private Long pId;
private String pName;
// 生成的getter和setter方法如下,方法體略
public Long getId() {}
public void setId(Long id) {}
public String getName() {}
public void setName(String name) {}
}
參考文章:https://blog.csdn.net/weixin_38229356/article/details/82937420