@Builder
@Builder注释为你的类生成复杂的构建器API。
实体类Emp@Builder
public class Emp {
private Integer empno;
private String ename;
private String job;
private Integer mgr;
private LocalDate hiredate;
}
生成代码
public class Emp {
private Integer empno;
private String ename;
private String job;
private Integer mgr;
private LocalDate hiredate;
Emp(Integer empno, String ename, String job, Integer mgr, LocalDate hiredate) {
this.empno = empno;
this.ename = ename;
this.job = job;
this.mgr = mgr;
this.hiredate = hiredate;
}
public static Emp.EmpBuilder builder() {
return new Emp.EmpBuilder();
}
public static class EmpBuilder {
private Integer empno;
private String ename;
private String job;
private Integer mgr;
private LocalDate hiredate;
EmpBuilder() {
}
public Emp.EmpBuilder empno(Integer empno) {
this.empno = empno;
return this;
}
public Emp.EmpBuilder ename(String ename) {
this.ename = ename;
return this;
}
public Emp.EmpBuilder job(String job) {
this.job = job;
return this;
}
public Emp.EmpBuilder mgr(Integer mgr) {
this.mgr = mgr;
return this;
}
public Emp.EmpBuilder hiredate(LocalDate hiredate) {
this.hiredate = hiredate;
return this;
}
public Emp build() {
return new Emp(this.empno, this.ename, this.job, this.mgr, this.hiredate);
}
public String toString() {
return "Emp.EmpBuilder(empno=" + this.empno + ", ename=" + this.ename + ", job=" + this.job + ", mgr=" + this.mgr + ", hiredate=" + this.hiredate + ")";
}
}
}
@SuperBuilder
父类
@SuperBuilder
public class PageQuery {
/**
* 所有查询的字段
*/
private String columns;
/**
* 当前显示的页码
*/
private Integer pageNum = 1;
/**
* 每页的大小
*/
private Integer pageSize = 10;
}
生成的代码
public class PageQuery {
private String columns;
private Integer pageNum = 1;
private Integer pageSize = 10;
protected PageQuery(final PageQuery.PageQueryBuilder b) {
this.columns = b.columns;
this.pageNum = b.pageNum;
this.pageSize = b.pageSize;
}
public static PageQuery.PageQueryBuilder builder() {
return new PageQuery.PageQueryBuilderImpl();
}
private static final class PageQueryBuilderImpl extends PageQuery.PageQueryBuilder {
private PageQueryBuilderImpl() {
}
protected PageQuery.PageQueryBuilderImpl self() {
return this;
}
public PageQuery build() {
return new PageQuery(this);
}
}
public abstract static class PageQueryBuilder {
private String columns;
private Integer pageNum;
private Integer pageSize;
public PageQueryBuilder() {
}
protected abstract B self();
public abstract C build();
public B columns(final String columns) {
this.columns = columns;
return this.self();
}
public B pageNum(final Integer pageNum) {
this.pageNum = pageNum;
return this.self();
}
public B pageSize(final Integer pageSize) {
this.pageSize = pageSize;
return this.self();
}
public String toString() {
return "PageQuery.PageQueryBuilder(columns=" + this.columns + ", pageNum=" + this.pageNum + ", pageSize=" + this.pageSize + ")";
}
}
}
子类
@SuperBuilder
public class UserQuery extends PageQuery {
/**
* 编号
*/
@ApiModelProperty(value = "编号")
private Integer id;
/**
* 姓名
*/
@ApiModelProperty(value = "姓名")
private String name;
/**
* 昵称
*/
@ApiModelProperty(value = "昵称")
private String nickname;
public static void main(String[] args) {
System.out.println(3);
}
}
生成的代码
public class UserQuery extends PageQuery {
@ApiModelProperty("编号")
private Integer id;
@ApiModelProperty("姓名")
private String name;
@ApiModelProperty("昵称")
private String nickname;
protected UserQuery(final UserQuery.UserQueryBuilder b) {
super(b);
this.id = b.id;
this.name = b.name;
this.nickname = b.nickname;
}
public static UserQuery.UserQueryBuilder builder() {
return new UserQuery.UserQueryBuilderImpl();
}
private static final class UserQueryBuilderImpl extends UserQuery.UserQueryBuilder {
private UserQueryBuilderImpl() {
}
protected UserQuery.UserQueryBuilderImpl self() {
return this;
}
public UserQuery build() {
return new UserQuery(this);
}
}
public abstract static class UserQueryBuilder extends PageQueryBuilder {
private Integer id;
private String name;
private String nickname;
public UserQueryBuilder() {
}
protected abstract B self();
public abstract C build();
public B id(final Integer id) {
this.id = id;
return this.self();
}
public B name(final String name) {
this.name = name;
return this.self();
}
public B nickname(final String nickname) {
this.nickname = nickname;
return this.self();
}
public String toString() {
String var10000 = super.toString();
return "UserQuery.UserQueryBuilder(super=" + var10000 + ", id=" + this.id + ", name=" + this.name + ", nickname=" + this.nickname + ")";
}
}
}
使用
public static void main(String[] args){
UserQuery query = UserQuery.builder()
.id(123)
.name("zhangsan")
.pageNum(3)
.pageSize(5)
.build();
}