spring boot @Valid 与 @Validated 使用 及 统一异常处理
1.@Valid使用
1.实体类添加验证规则
有多种校验规则
@Data
public class PaperDTO {
/**
* 试卷id
*/
@NotNull(message = "必填字段不能为空")
@JsonFormat(shape = JsonFormat.Shape.STRING)
private Long id;
/**
* 试卷名
*/
@NotNull(message = "必填字段不能为空")
private String name;
/**
* 试卷类型
*/
@NotNull(message = "必填字段不能为空")
private Long paperType;
/**
* 试卷难度
*/
@NotNull(message = "必填字段不能为空")
private Long difficuty;
/**
* 总分
*/
@NotNull(message = "必填字段不能为空")
private BigDecimal score;
//若需要嵌套校验则在需要校验的结构体上添加@Valid
@Valid
private List<User> users
}
2.在Controller层方法添加校验注解
@PostMapping("/addPaper")
public PaperDTO doAddPaper(@RequestBody @Valid PaperDTO paperDTO) {
//处理传入数据
return paperDTO;
}
2.@Validated 分组校验使用
1.添加分组的接口
IdGroup.class
public interface IdGroup {
}
AddGroup.class
public interface AddGroup {
}
UpdateGroup.class
public interface UpdateGroup {
}
2.需要校验结构体添加校验规则
@Data
public class PaperDTO {
/**
* 试卷id
*/
@NotNull(groups = {IdGroup.class,UpdateGroup.class}, message = "必填字段不能为空")
@JsonFormat(shape = JsonFormat.Shape.STRING)
private Long id;
/**
* 试卷名
*/
@NotNull(groups = {AddGroup.class,UpdateGroup.class}, message = "必填字段不能为空")
pri