子类的toString方法未包含父类属性
- lombok 的 @Data 注解会自动生成 toString 方法,但它默认不会调用父类的 toString 方法。因此,子类的 toString 方法可能只包含了自身的属性,而忽略了继承自 父类的属性。
- 这会导致 System.out.println(子类); 只输出 子类 自身的属性,而忽略父类的属性。
在分页查询时遇见的问题
1.通用的PageQuery接受查询参数
@Data
public class PageQuery {
public static final Integer DEFAULT_PAGE_SIZE = 20;
public static final Integer DEFAULT_PAGE_NUM = 1;
@Min(value = 1, message = "页码不能小于1")
private Integer pageNo = DEFAULT_PAGE_NUM;
@Min(value = 1, message = "每页查询数量不能小于1")
private Integer pageSize = DEFAULT_PAGE_SIZE;
//排序顺序(默认升序)
private Boolean isAsc = true;
//排序依据字段名称
private String sortBy;
2.特定的查询参数接受(例如:UserDTO)
显式重写 toString() 方法
@Data
public class UserDTO extends PageQuery {
private String username;
private String phone;
@DateTimeFormat(pattern = "yyyy-MM-dd")
private LocalDate begin;
@DateTimeFormat(pattern = "yyyy-MM-dd")
private LocalDate end;
@Override
public String toString() {
return "UserDTO{" +
"username='" + username + '\'' +
", phone='" + phone + '\'' +
", creditLevel='" + creditLevel + '\'' +
", isBlacklist=" + isBlacklist +
", begin=" + begin +
", end=" + end +
", pageNo=" + getPageNo() +
", pageSize=" + getPageSize() +
", isAsc=" + getIsAsc() +
", sortBy='" + getSortBy() + '\'' +
'}';
}
}
配置 Lombok 注解以继承父类属性
@Data
@ToString(callSuper = true) // 显式包含父类字段
@EqualsAndHashCode(callSuper = true)
public class 实体类2 extends 实体类1 {
// 子类字段
}
检查包扫描配置
@SpringBootApplication
@ComponentScan({"包1", "包2"}) // 显式指定扫描范围
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}