一、对于只有一层的实体类,直接使用@Validated注解就行
另外需要注意:如果是在方法中直接验证参数,那在类上面加@Validated就行如下:
@Validated
public class DutyPeriodController {
@Autowired
private DutyPeriodService dutyPeriodService;
@DeleteMapping(value = "/delete")
public ResultMessage delete(@NotNull(message = "班次id不能为空") Integer dutyPeriodId) {
dutyPeriodService.delete(dutyPeriodId);
return ResultMessage.newSuccessfulMessage(DefaultMessages.DELETE_SUCCESS);
}
}
如果是在方法验证实体类,必须在实体类前面加上@Validated,如下
public class ChargingConfController {
@PostMapping("/add")
public ResultMessage add(@Validated ChargingConfDTO chargingConf) {
chargingConfService.add(chargingConf);
return ResultMessage.newSuccessfulMessage(DefaultMessages.SAVE_SUCCESS);
}
二、对于多层,就要了解一下@Validated和@Valid区别了,@Valid可用于bean中有bean,多层判断,实例如下:
①controller层
public class DutyPeriodController {
@PostMapping(value = "/save")
public ResultMessage save(@Valid @RequestBody DutyPeriodDTO dutyPeriodDTO) {
dutyPeriodService.save(dutyPeriodDTO);
return ResultMessage.newSuccessfulMessage(DefaultMessages.SAVE_SUCCESS);
}
}
②实体类层
public class DutyPeriodDTO {
@Valid
private List<DutyWeekPeriodDTO> dutyWeekPeriods;
}
public class DutyWeekPeriodDTO {
private Integer periodId;
@NotNull(message = "星期信息不能为空")
@Min(value = 1, message = "星期信息必须大于1")
@Max(value = 7, message = "星期信息不能大于7")
private Integer week;
@NotEmpty(message = "开始时间不能为空")
@Pattern(regexp = "([01][0-9]|2[0-4]):(0[0-9]|[1-6][0-9])", message = "开始时间格式必须为HH:mm")
private String startTime;
@NotEmpty(message = "结束时间不能为空")
@Pattern(regexp = "([01][0-9]|2[0-4]):(0[0-9]|[1-6][0-9])", message = "结束时间格式必须为HH:mm")
private String endTime;
}