美文网首页
Bean校验,Hibernate Validator案例训练 用

Bean校验,Hibernate Validator案例训练 用

作者: 在路上phper | 来源:发表于2018-03-08 17:08 被阅读81次

    上节课学习了Hibernate Validator的验证
    下面我们来到官网继续学习https://docs.jboss.org/hibernate/stable/validator/reference/en-US/html_single/
    看下面这个需求 我们今天使用Hibernate的验证器实现下

    image.png
    首先先列举一些Hibernate Validator的常用的注解(网上到处可见)
    image.png
    首先在UserEntity中加入用户密码字段 并打入注解
    image.png
    然后再MySpring中掉用
    image.png
    运行结果
    image.png
    因为我们传入的密码为123不符合6-20位 提示出信息
    接下来我们在加入一个用户兴趣爱好字段 并验证
    image.png
    接下来来到UserEntity加入兴趣爱好字段 并添加验证注解
    image.png
    来到MySpring 设置下兴趣爱好值
    image.png
    运行结果
    image.png
    因为我们没有填兴趣爱好 所以提示出相应的信息
    接下来修改下兴趣爱好数组值
    image.png
    运行结果
    image.png
    可以发现验证是通过了 但是如果想对兴趣爱好值进行进一步控制怎么办?
    接下来进一步修改下需求 想要设置兴趣爱好最少为1个最多为10个 并且兴趣爱好名称为至少2个字最多10个字
    下面用代码演示下
    在UserEntity中加入
    image.png
    在字段的前面加入字符长度限制注解
    在MySpring中调用
    image.png
    运行结果
    image.png
    由于传入字符长度为1 所以提示出验证信息
    验证更多的用法参考上面放出的官方地址
    接下来学习下自定义的验证 有的时候老外带的验证不能符合我们的验证规则,需要自己自定义验证规则
    image.png
    下面我们模拟个需求
    比如用户名在注册的时候不能有违禁字符
    默认不予许字符串中拥有“bhcbhc”这个词汇
    如果设置了违禁词汇,用逗号分离
    下面我们用代码演示下
    之前学注解时候我们写了一个自定义的注解NameCheck 那么这个注解如何和我们的验证有关联呢?
    有几个属性是必须的
    第一个是message
    比如说一旦出错,出现异常 需要显示什么内容
    接下来看下NameCheck注解
    image.png
    可以看见新增的必须得三个属性
    上面创建了注解 那么如何对注解进行解析呢
    接下来在MyAnnos包下面创建一个NameCheckClass文件
    目录如下
    image.png
    那么如何把注解和我们创建的类文件关联呢?
    需要在我们的自定义注解里面打入@Constraint注解 可以ctrl+鼠标左键进入源码 看见validatedBy方法
    表示由哪个类进行验证
    自定义NameCheck注解中加入如下
    image.png
    可以发现有波浪线标红了 编译器告诉我们这个类文件需要继承ConstraintValidator接口
    所以我们来到NameCheckClass文件 继承该接口 alt+enter 实现其中的两个方法 NameCheckClass中波浪线消失了
    image.png
    NameCheckClass文件变为如下
    image.png
    我们在else处 需要编写判断代码
    这里需要判断一下 NameCheck注解里面有个forbidden里面有个默认的值bhcbhc 如果有别的值 可以在打注解的时候编写
    所以来到UserEntity
    在userName字段上 打入自定义注解
    image.png
    那么这个自定义字段值如何获取呢?
    在NameCheckClass文件中初始化方法里的constraintAnnotation对象可以获取到
    image.png
    因此我们定义一个变量
    image.png
    下面进行else部分逻辑判断
    NameCheckClass代码如下
    image.png
    接下来就可以运行MySpring了
    MySpring代码如下
    image.png
    运行结果
    image.png
    出现了有违禁词汇 因为我们的username设置为了bhcbhc
    接下来我们把UserEntity中自定义注解加上message信息 修改下默认的message
    image.png
    运行MySpring
    image.png
    接下来注释掉username值在MySpring中
    image.png
    在UserEntity中注释掉username的@NoTNull注解
    image.png
    运行结果
    image.png
    可以发现如果没有设置username 我们默认是认为合法的
    因为我们CheckUserName没有对null值进行处理 因为有@Notnull注解进行判断
    所以一般我们要加上@NotNull注解 省去自己判断
    再次在UserEntity中的username处加入@NotNull注解
    image.png
    运行MySpring
    image.png
    因为我们没有对username进行设置值
    以上就是最简单的自定义验证

    相关文章

      网友评论

          本文标题:Bean校验,Hibernate Validator案例训练 用

          本文链接:https://www.haomeiwen.com/subject/qhjyfftx.html