栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

hibernate校验验证方法

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

hibernate校验验证方法

文档

简单使用

首先,在pojo添加注解,hibernate-validator提供了很多内置的注解

public class Car {

    @NotNull
    private String manufacturer;

    @NotNull
    @Size(min = 2, max = 14)
    private String licensePlate;

    @Min(2)
    private int seatCount;

    public Car(String manufacturer, String licencePlate, int seatCount) {
        this.manufacturer = manufacturer;
        this.licensePlate = licencePlate;
        this.seatCount = seatCount;
    }

    //getters and setters ...
}

制定message(el表达式)

 @Size(
            min = 2,
            max = 14,
            message = "The license plate '${validatedValue}' must be between {min} and {max} characters long"
    )
spring集成 @Valid

最常见的使用方式是在controller层的bean前和@Valid注解配合使用

    
    @POST
    @CacheEvict(key = "#user.username")
    public Response createUser(@Valid @UniqueAccount Account user) {
        return CommonResponse.op(() -> service.createAccount(user));
    }
编码暴露
 public static  String validate(T bean) {
        Validator  validator = Validation.byProvider(Hibernatevalidator.class)
                .configure()
//                .addProperty( "hibernate.validator.fail_fast", "true" )
                .buildValidatorFactory().getValidator();
        Set> validate = validator.validate(bean);
        List listError = new ArrayList<>();
        if (validate.size() > 0) {
            validate.forEach(tConstraintViolation -> listError.add(tConstraintViolation.getMessage()));
            return StringUtils.join(listError, ",");
        }
        return StringUtils.EMPTY;
    }
自定义校验器
@Target({ FIELD, METHOD, PARAMETER, ANNOTATION_TYPE, TYPE_USE })
@Retention(RUNTIME)
@Constraint(validatedBy = CheckCasevalidator.class)
@documented
@Repeatable(List.class)
public @interface CheckCase {

    String message() default "{org.hibernate.validator.referenceguide.chapter06.CheckCase." +
            "message}";

    Class[] groups() default { };

    Class[] payload() default { };

    CaseMode value();

    @Target({ FIELD, METHOD, PARAMETER, ANNOTATION_TYPE })
    @Retention(RUNTIME)
    @documented
    @interface List {
        CheckCase[] value();
    }
}

定义约束器

public class CheckCasevalidator implements ConstraintValidator {

    private CaseMode caseMode;

    @Override
    public void initialize(CheckCase constraintAnnotation) {
        this.caseMode = constraintAnnotation.value();
    }

    @Override
    public boolean isValid(String object, ConstraintValidatorContext constraintContext) {
        if ( object == null ) {
            return true;
        }

        if ( caseMode == CaseMode.UPPER ) {
            return object.equals( object.toUpperCase() );
        }
        else {
            return object.equals( object.toLowerCase() );
        }
    }
}

在field添加注解

    @NotNull
    @Size(min = 2, max = 14)
    @CheckCase(CaseMode.UPPER)
    private String licensePlate;
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/764247.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号