一般来说我们建立一个实体像是以下
@Entity
public class Product {
private Long id;
private Integer price;
private String name;
public Product() {
}
public Product(String name, int price) {
this.name = name;
this.price = price;
}
...
}
建立好之後,我们要让它被存取,因此都会使用 get、set 方式进行设定,当然还有建构方法甚至是 toString 这些很常的被使用,因此程序码有很多时间都在做这些事,不仅是代码过於冗长甚至浪费一些精力在这个地方。透过 Lombok 工具可以省下一些精力。
maven 引用 Lombok 方式
<dependencies>
...
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.20</version>
<scope>provided</scope>
</dependency>
...
</dependencies>
透过 @Getter @Setter @NoArgsConstructor 这些 Lombok 注释让我们轻松许多
@Entity
@Getter // 所有属性都设置 get
@Setter // 所有属性都设置 set
@NoArgsConstructor // 无参构造函式
@AllArgsConstructor // 全参构造函式
@ToString // 建构 toString
public class Product {
// 有了 Lombok 注释,程序码更简洁
private Long id;
private Integer price;
private String name;
}
假设我们从 client 请求获取数据,但其数据需要经过一些处里才能被储存至 DB 中,在被储存在 DB 中我们的实体会被建构。但这件构过程中需要 new 出物件,并使用 set 方式将这个实体组成一个能被 DB 储存的物件。就像以下
Product product = new Product();
product.setPrice(100);
product.setName("Apple");
但藉由 Lombok 中 @Builder 注释我们可以更简洁更容易阅读
Product product = Product.builder()
.price(100)
.name("Apple")
.build();
假设有一个实体属性是 List 类型,我们可以透过 @Singular 注释进行建构,如下
@Entity
@Getter // 所有属性都设置 get
@Setter // 所有属性都设置 set
@NoArgsConstructor // 无参构造函式
@AllArgsConstructor // 全参构造函式
public class Product {
// 有了 Lombok 注释,程序码更简洁
private Long id;
private Integer price;
private String name;
@Singular("tag")
private List<String> tags;
}
我们建构数据的时候可以有以下效果
Product product = Product.builder()
.price(100)
.name("Apple")
.tag("eat") // this
.tag("health") // this
.build();
Lombok 还有满多有趣的用法像是以下
public class Test {
...
@EqualsAndHashCode(onlyExplicitlyIncluded = true) // 覆写 quals 和 HashCode
public static class GroupBy {
@EqualsAndHashCode.Include
private String brand;
@EqualsAndHashCode.Include
private String model;
@EqualsAndHashCode.Include
private int year;
}
}
反正学不完...,继续加油吧!!
<<: < 关於 React: 开始打地基| LifeCycle 生命圈>
SearchMyFiles 今天来认识这个看名字判断应该是找自己的档案的工具? 可是这功能不是从 w...
企业通常会进行渗透测试,以验证现有的安全和隐私控制,并通过发现漏洞和利用漏洞,彻底记录测试期间执行的...
讲一个经典案例除以0,首先创造一个DivideByZeroEXception类别继承runtime_...
前情提要 要用 Swift 来开发 iOS App,我们会需要一台 Mac,这台 Mac 看是要直接...
其实根本还不太会SQL,这周的任务马上就变成了学习LINQ,其中的重点包括: IEnumerable...