验证参数准确性方法(javax.validation)

什么是javax.validation

javax.validation是Java提供的一种用于数据验证的标准规范。它定义了一组接口和注解,用于对Java对象进行各种验证操作,以确保对象数据的正确性和一致性。

该规范旨在提供一种通用的、可扩展且与框架无关的验证解决方案,用于在应用程序开发过程中验证用户输入、数据对象的有效性和业务规则的符合性。

javax.validation的核心组件是验证器(Validator),它是该规范的核心接口。验证器使用注解和约束条件来对目标对象进行验证,并返回验证结果。

使用规则

@NotNull:用于标记字段或方法参数不能为空。
@Size:用于标记字段或方法参数的长度限制,包括字符串的长度、集合的大小等。
@Min:用于标记字段或方法参数的最小值限制,常用于数值类型。
@Max:用于标记字段或方法参数的最大值限制,常用于数值类型。
@DecimalMin:用于标记字段或方法参数的最小值限制,支持浮点数和字符串类型。
@DecimalMax:用于标记字段或方法参数的最大值限制,支持浮点数和字符串类型。
@Pattern:用于标记字段或方法参数的正则表达式限制。
@Email:用于标记字段或方法参数的电子邮件地址规范限制。
@NotEmpty:用于标记字符串、集合或数组字段不能为空,与@NotNull不同的是,它还包括空白字符的判断。
@NotBlank:用于标记字符串字段不能为空,并且必须包含至少一个非空白字符。
将注解标注在bean中的属性中,如下:

@Data
public class OrderParamInfoDTO {
    /**
     * 渠道订单号
     */
    @NotNull(message = "渠道订单号不能为空")
    private String        channelOrderNo;
    /**
     * 渠道订单号序列号
     */
    private String        channelOrderNoSerialize;
    /**
     * 渠道id
     */
    @NotNull(message = "渠道id不能为空")
    private Long          channelId;
    /**
     * 订单类型
     */
    @NotNull(message = "订单类型不能为空")
    private OrderTypeEnum orderType;
    /**
     * 产品编码
     */
    private String        productNo;
    /**
     * 业务订单号
     */
    private String        bizOrderNo;
    /**
     * 方案号
     */
    private String        planNo;
    /**
     * 是否依赖申请数据
     */
    private boolean       dependentOnApply;
    /**
     * 是否防止并发请求
     * 默认开启,如有特殊需有请主动关闭
     *
     */
    private boolean       preventConcurrent = true;
    /**
     * 成功后是否需要异步处理, 只有调用交易服务,才起作用
     */
    private boolean       needAsyncHandle;
    /**
     * 是否需保存数据
     *  默认开启
     */
    private boolean       needSaveOrder = true;
    /**
     * 业务时间
     */
    private Date          bizDate;
    /**
     * 小的操作项
     */
    private String        detailOperateItem;
    /**
     * 订单金额
     */
    private BigDecimal    orderAmount;
    /**
     * 订单保额
     */
    private BigDecimal    orderSumInsured;

    /**
     * 订单有效天数
     */
    private Integer    expireDays;
    /**
     * 是否需保存详细数据数据
     *  默认开启
     */
    private boolean       needSaveDetail = true;
}

使用方法:

	public static <I> void validateData(I model){
		if(model == null){
			throw new BizRuntimeException(ErrorCodeEnum.NULL_ERROR);
		}
		Validator validator = VALIDATOR_FACTORY.getValidator();
		Set<ConstraintViolation<I>> constraintViolations = validator.validate(model);
		if(constraintViolations != null && !constraintViolations.isEmpty()){
			for(ConstraintViolation<I> violation : constraintViolations){
				throw BizRuntimeException.deprecatedConstructor(ErrorCodeEnum.PARAM_ERROR, violation.getMessage());
			}
		}
		return;
	}

用此方法可以简洁快速的检查参数是否合法。

你可能感兴趣的:(前端,数据库)