springboot validation 校验字段是否为空
修改和新增分组代码
public interface UpdateGroup { }public interface InsertGroup { }
实体类添加注解
@Schema(name = "reportTypeId", description = "举报类型id") @NotNull(message = "举报类型id不可为空") private Long reportTypeId; @Schema(name = "reportImg", description = "举报图片证据") @NotEmpty(message = "举报图片证据不可为空") private List<String> reportImg; @Schema(name = "reportReason", description = "举报说明") @NotBlank(message = "举报说明不可为空") private String reportReason;
@NotNull: 是判断是否为空,一般用作 整形的 Long 、 Integer等,也可以用String 但只判断为null,不判断是否为空字符串
@NotEmpty:非空检查:确保字符串不为 null。非空白检查:确保字符串至少包含一个非空格字符。一般用作String字符串类型
@Size(max,min): 限制字符长度必须在min到max之间
@Schema(name = "reportTypeId", description = "举报类型id") @NotNull(message = "举报类型id不可为空", groups = {InsertGroup.class}) private Long reportTypeId; @Schema(name = "reportReason", description = "举报说明") @NotBlank(message = "举报说明不可为空", groups = {UpdateGroup.class}) private String reportReason;
如果注解 @NotBlank 不添加groups分组校验,controller 使用 @Validated 也不需要添加分组,新增、修改都可以使用
@PostMapping("/add") public R add(@Validated @RequestBody SysReportType sysReportType) { return R.ok(sysReportTypeService.add(sysReportType)); }
如果注解 @NotNull(message = "举报类型id不可为空", groups = {InsertGroup.class}): 只有添加时 InsertGroup 才会校验;
controller 使用 @Validated(InsertGroup.class) 需要添加分组,此时只会校验 @NotNull 带InsertGroup.class的分组
@PostMapping("/add") public R add(@Validated(InsertGroup.class) @RequestBody SysReportInfoDTO sysReportInfoDTO) { return R.ok(sysReportInfoService.add(sysReportInfoDTO)); }
如果注解 @NotBlank(message = "举报说明不可为空", groups = {UpdateGroup.class}): 只有修改时 UpdateGroup才会校验;
controller 使用 @Validated(UpdateGroup.class) 需要添加分组,此时只会校验 @NotBlank注解 带 UpdateGroup.class 的分组
@PostMapping("/update") public R update(@Validated(UpdateGroup.class) @RequestBody SysReportInfoDTO sysReportInfo) { return R.ok(sysReportInfoService.update(sysReportInfo)); }
总结,如果不加分组, 实体类 : @NotBlank controller:@Validated 都不需要添加分组信息
如果加修改分组, 实体类:@NotBlank controller:@Validated 都需要添加修改 UpdateGroup 分组信息
如果加添加分组, 实体类:@NotBlank controller:@Validated 都需要添加新增 InsertGroup分组信息