我有一个请求POJO类,它包含所有字符串数据类型字段。当我必须将它们存储到DB时,数据类型必须准确。考虑到我需要验证并将我的每个单独的POJO字段转换为相应的数据类型。此外,请求POJO可能包含200多个字段。我如何验证和转换我的每个字段?这是我的请求POJO看起来像-〉
@Data
public class ProductRequest {
private String goodScore;
private String invalidScore;
private String income;
private String salary;
private String updatedOn;
}
这是我的响应POJO应该看起来像,这些是我实际上需要存储在DB -〉中的类型
@Builder
@Data
public class ProductResponse {
private Integer goodScore;
private Integer invalidScore;
private Float income;
private Double salary;
private LocalDate updatedOn;
}
这就是我如何尝试和实施-〉
public class ProductImplement {
public static void main(String[] args) {
ProductRequest request = new ProductRequest();
try {
ProductResponse.builder()
.goodScore(!StringUtils.hasLength(request.getGoodScore()) ? Integer.parseInt(request.getGoodScore())
: null)
.income(!StringUtils.hasLength(request.getIncome()) ? Float.parseFloat(request.getIncome()) : null)
.invalidScore(
!StringUtils.hasLength(request.getInvalidScore()) ? Integer.parseInt(request.getInvalidScore())
: null)
.salary(!StringUtils.hasLength(request.getSalary()) ? Double.parseDouble(request.getSalary()) : null)
.updatedOn(
!StringUtils.hasLength(request.getUpdatedOn()) ? LocalDate.parse(request.getUpdatedOn()) : null)
.build();
}catch(Exception e) {
e.printStackTrace();
}
}
}
因此,如果值不为Null,则解析类型并设置。否则,将字段值设置为Null。但是,在这种情况下,如果在解析时发生任何异常,则整个对象返回Null,对于200个以上的字段执行此操作会非常麻烦。
是否有任何框架来验证单个数据类型,即使在例外情况下,我们也需要忽略该字段并继续解析其他字段?如果我不必使用Respone POJO,也可以。欢迎提出任何建议。
请提出建议。提前感谢!
1条答案
按热度按时间ssgvzors1#
您可以使用
@NotNull
、@NotBlank
、@MinLength
、@MaxLength
等javax.validation
应用程序接口为确保验证,请在***控制器***级别使用
@Validated
,在***属性***级别使用@Valid
!附文参考!
https://www.baeldung.com/spring-valid-vs-validated
Difference between @Valid and @Validated in Spring
这将避免手动验证,并从此删除样板代码:)