Hibernate Validator
后端开发中,常常需要对入参进行非空、非法格式校验,以确保数据的安全性和准确性。一般会在Controller层进行校验,此类代码臃肿且规律,在参数多的情况下简直是灾难,严重影响代码的整洁度。如下代码所示:
@PostMapping("")
public JsonData save(Activity activity){
if (StringUtils.isEmpty(activity.getName())){
return JsonData.fail("活动名称不能为空");
}
if (StringUtils.isEmpty(activity.getType())){
return JsonData.fail("活动类型不能为空");
}
if (activity.getStartTime() == null){
return JsonData.fail("开始时间不能为空");
}
if (activity.getEndTime() == null){
return JsonData.fail("结束时间不能为空");
}
activityService.save(activity);
return JsonData.success(activity);
}
Hibernate Validator提供了使用注解来校验参数,可以优雅的解决这个问题。SpringBoot已加入Hibernate Validator依赖,不需要单独添加。下面从不同入参形式来看Hibernate Validator如何校验参数。
校验实体类型参数
参数比较多时,一般会使用dto、vo、po来封装参数,在实体类中课加入以下注解,其他注解请自行查阅相关文档。
private Integer id;
@NotBlank(message = "活动名称不能为空")
private String name;
@NotBlank(message = "活动类型不能为空")
private String type;
@NotNull(message = "开始时间不能为空")
private Date startTime;
@NotNull(message = "结束时间不能为空")
private Date endTime;
private String description;
在controller方法中使用@Validated注解实体类,同时引入参数BindingResult,BindingResult就是校验结果,然后将结果遍历返回即可。
@PostMapping("")
public Jso