基类 BaseDate
import java.util.Date;
@Data
@ToString
@NoArgsConstructor
@AllArgsConstructor
@SuperBuilder
public class BaseDate {
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date createdDate;
private String createdBy;
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date updatedDate;
private String updatedBy;
}
UserIno继承基类,使用Build创建User对象。
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
import lombok.experimental.SuperBuilder;
@Data
@ToString(callSuper = true)
@NoArgsConstructor
@AllArgsConstructor
@SuperBuilder
public class UserInfo extends BaseDate {
private int id;
private String username;
private String firstName;
private String lastName;
private String email;
}
@Builder注解不能 build 父类属性,在子类和父类中都使用@SuperBuilder可解决此问题。
示例代码:
public class UserInfoConverter {
public static UserInfo byNewForm(UserNewForm userNewForm) {
return UserInfo.builder()
.username(userNewForm.getUsername().toUpperCase(Locale.ROOT))
.firstName(userNewForm.getFirstName())
.lastName(userNewForm.getLastName())
.email(userNewForm.getEmail())
.createdDate(new Date())
.createdBy("")
.build();
}
}
createdDate / createdBy 来自基类,但是可以在build时被使用。