【java】使用Validate对javaBean进行校验

一、前言

现在写代码,避免不了校验,比如校验字段是否为空呀、校验是否大于某个值呀、校验是否是email格式呀等等。

现在写基本就是if … else …

  • 验证代码繁琐,重复劳动
  • 方法内代码显得冗长
  • 每次要看哪些参数验证是否完整,需要去翻阅验证逻辑代码

二、hibernate validator

基本上所有方法,开始的时候都要进行一下判断,这样重复代码很多。为了优化出更加简洁的代码。我们可以使用org.hibernate.validator ,使用注解来对代码的vo进行校验。

请看下面的demo:

vo:

import lombok.Data;
import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.NotBlank;

import javax.validation.constraints.NotNull;
import java.io.Serializable;

@Data
public class ModifyVO extends OperatorVO implements Serializable {
    private static final long serialVersionUID = -4653702540447208894L;

    @NotNull(message = "007,id不能为空")
    private Integer id;

  
    @NotBlank(message = "007,字段名称不能为空")
    @Length(min = 1, max = 50, message = "最多支持输入50个字")
    private String tagName;
  
    @NotNull(message = "007,创建方式不能为空")
    private Integer tagRule;
    }

modify 方法:

import javax.validation.Valid;

  @PostMapping(value = "/v100/modify")
    public BusiSystemResponse<Boolean> modify(@RequestBody  @Valid ModifyVO vo) {
        BusiSystemResponse<Boolean> response = new BusiSystemResponse<>();
        if (result.hasErrors()) {
            for (ObjectError error : result.getAllErrors()) {
                logger.warn(error.getDefaultMessage());
            }
            response.setData(null);
            response.setMsg(result.getAllErrors().get(0).getDefaultMessage());
            response.setSingleStatus(CommonResponseCodeEnum.PARAM_ERROR.getCode());
            return response;
        }
        return response;
    }

三、详细的注解介绍

@Data
public class Demo2 {
    @Length(min = 5, max = 17, message = "length长度在[5,17]之间")
    private String length;

    /**@Size不能验证Integer,适用于String, Collection, Map and arrays*/
    @Size(min = 1, max = 3, message = "size在[1,3]之间")
    private String age;

    @Range(min = 150, max = 250, message = "range在[150,250]之间")
    private int high;

    @Size(min = 3,max = 5,message = "list的Size在[3,5]")
    private List<String> list;
}

对象级联校验

对象内部包含另一个对象作为属性,属性上加@Valid,可以验证作为属性的对象内部的验证:(验证Demo2示例时,可以验证Demo2的字段)

@Data
public class Demo2 {
    @Size(min = 3,max = 5,message = "list的Size在[3,5]")
    private List<String> list;

    @NotNull
    @Valid
    private Demo3 demo3;
}

@Data
public class Demo3 {
    @Length(min = 5, max = 17, message = "length长度在[5,17]之间")
    private String extField;
}

四、小结

更多请见 https://www.cnblogs.com/mr-yang-localhost/p/7812038.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你个佬六

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值