上节课我们对用户信息的验证做了个简单的案例
image.png
那么这节课我们学习下在非mvc下的分组验证
上节课我们的实体UserEntity里面除了用户名 密码字段 还有 用户id字段 那么这个id是否需要验证呢?
分两种情况做一个场景
1.新增用户 只验证用户名 密码 和一些其他信息即可 用户id是没有的 还没产生(数据库的插入操作)
2.更新操作 在数据库中更新这张表 用户id是一定要有的 如果值小于0或者不符合我们的规范 是不能执行操作的
如果在新增的时候加入验证注解
下面假设在UserEntity里面的userid字段上打入注解@Min
代码如下
image.png
那么MyTest1里面的方法也会对userid进行验证 新增则会报错
因此这节课我们要学习分组验证
也就是在打注解的时候后面跟上group
下面看代码
来到hibernate validator官网https://docs.jboss.org/hibernate/stable/validator/reference/en-US/html_single/#chapter-groups
给了我们的基本验证方式
image.png
可以看见groups是一个复数 说明可以放多个验证的class 这个class不需要我们写任何代码 只需要写个接口即可
接下来在com.jtthink下创建一个ValidateGroup包
在包下面创建两个空接口 SaveValidate和UpdateValidate
目录如下
image.png
SaveValidate //执行新增操作的时候用到的接口
UpdateValidate//执行update操作的时候用到的接口
这两个空接口不需要写任何代码 也不需要实现
接下来来到UserEntity用户实体类
我们在执行用户新增操作的时候 由于在userid字段上打入了@Min注解
image.png
也就是说在插入用户实体的时候用户id不能小于100
接下来加入分组
image.png
大括号里面可以写入多个class 如果只有一个 则不用大括号
为了演示
在MyTest1中写一个方法SaveUser
下面来到文档
image.png
看见分组验证执行的validator方法
上节课我们在UserConfig中写了一个bean对象 其返回一个spring的默认验证器 他本是是继承于validator接口的
这里我们需要改一下 直接使用它的实现类 如下
image.png
然后再MyTest1中修改一下装配时用到的类
image.png
因为localValidator里面的一些方法是Validator接口里所没有的
接下来看下MyTest1中新增的方法
image.png
接下来修改下MySpring中调用代码
image.png
这里执行的是我们在MyTest1中新增的SaveUser方法 表示新增
运行结果
image.png
因为我们一个参数都没设置 所以这里的userid一定是不对的 因为我们注解里面匹配的是groups的分组验证
如果我们在MyTest1中去掉SaveValidate.class参数
代码如下
image.png
没有参数二
再次运行下MySpring
image.png
可以发现依然能够验证
因为我们的UserEntity中注解匹配到了没有groups的注解 其中username是不能为空的
image.png
以上就是最简单的分组验证
为了以后学习Spring mvc 分组验证 我们将SaveUser中的方法参数二加上
image.png
下面改下username字段注解 将其也进行分组验证
在UserEntity中
image.png
接下来在MyTest1中新增个UpdateUser方法 执行更新操作
image.png
运行下MySpring
image.png
可以发现对用户名和userid进行验证了 因为注解中加入了groups
以上就是非mvc下分组验证的基本方式