网站下拉单设计欣赏,微信商城网站哪家做的好,中山市网站开发公司,中国建材网官方网站大家好#xff0c;我是小资。今天给大家说下参数校验。
标题中说的这三个注解所在的包路径为import javax.validation.constraints.*;
千万不要导错包哦#xff0c;因为他们在好多包里都存在。开发只需引入Spring-web依赖就可以使用了。轻轻松松干掉多余的if-else。 下面我…大家好我是小资。今天给大家说下参数校验。
标题中说的这三个注解所在的包路径为import javax.validation.constraints.*;
千万不要导错包哦因为他们在好多包里都存在。开发只需引入Spring-web依赖就可以使用了。轻轻松松干掉多余的if-else。 下面我们就一起看看它们具体怎么使用和有什么区别呢。
介绍和区别
NotNull
适用于基本数据类型(IntegerLongDouble等等)当 NotNull 注解被使用在 String 类型的数据上则表示该数据不能为 Null但是可以为 Empty 源码包注释
源码注释翻译被注释的元素不能为空。接受任何类型。
注被其标注的字段可以使用 size、Max、Min 对字段数值进行大小的控制
NotBlank
适用于 String 类型的数据上加了NotBlank 注解的参数不能为 Null 且 trim() 之后 size 0必须有实际字符 源码包注释
源码注释翻译带注释的元素不能为空并且必须包含至少一个非空白字符。接受CharSequence。
NotEmpty
适用于 String、Collection集合、Map、数组等等加了NotEmpty 注解的参数不能为 Null 或者 长度为 0 源码包注释
源码注释翻译被注释的元素既不能为null也不能为空。
使用方法
实体类使用方法 Data EqualsAndHashCode(callSuper false) Accessors(chain true) public class ArticleRequest implements Serializable { private static final long serialVersionUID1L; NotBlank(message 请填写文章标题) Length(max 200, message 文章标题最多200个字符) private String title; NotBlank(message 请填写文章作者) Length(max 50, message 文章作者最多50个字符) private String author; NotNull(message 是否热门不能为空) private Boolean isHot; NotEmpty(message 其他推荐文章不能为空) private ListArticleRequest articleRequestList; } Controller方法的使用
以上这些校验的注解都是需要Valid 或Validated 配合上使用才会生效的还可以对新增和修改做单独的配置
Valid 包位置import javax.validation.Valid;
Validated 包的位置
import org.springframework.validation.annotation.Validated; /** * 新增文章管理表 * param articleRequest 新增参数 */ RequestMapping(value /save, method RequestMethod.POST) public CommonResultString save(RequestBody Valid ArticleRequest articleRequest) { if (articleService.create(articleRequest)) { return CommonResult.success(); } else { return CommonResult.failed(); } } /** * 新增文章管理表 * param articleRequest 新增参数 */ RequestMapping(value /save, method RequestMethod.POST) public CommonResultString save(RequestBody Validated ArticleRequest articleRequest) { if (articleService.create(articleRequest)) { return CommonResult.success(); } else { return CommonResult.failed(); } } Valid 和 Validated 比较
最后我们来对 Valid 和 Validated 两个注解简单对比下 Valid 和 Validated 两者都可以对数据进行校验待校验字段上打的规则注解NotNull, NotEmpty等都可以对 Valid 和 Validated 生效 Valid 进行校验的时候需要用 BindingResult 来做一个校验结果接收。当校验不通过的时候如果手动不 return 则并不会阻止程序的执行 Validated 进行校验的时候当校验不通过的时候程序会抛出400异常阻止方法中的代码执行这时需要再写一个全局校验异常捕获处理类然后返回校验提示。
总体来说Validated 使用起来要比 Valid 方便一些它可以帮我们节省一定的代码并且使得方法看上去更加的简洁。
新增和修改单独配置
在开发中我们会遇到某些字段是新增是必传的而修改不是必传这种情况我们就可以单独对其进行指定。以下为配置方法。 字段配置 NotBlank(message 名称不能为空, groups { AddGroup.class, EditGroup.class }) private String name; 其中groups属性就可以实现该字段的单独设置说其中AddGroup和EditGroup是自己定义的两个接口文件它们两个类中没有任何代码只需要将接口创建下即可。 Validated指定
Validated(EditGroup.class)
在注解中填写需要校验的场景以上事例为只校验修改其参数是数组格式需要填写多个时换成数组格式即可
Validated({AddGroup.class,EditGroup.class})
此包下其它常用的校验注解 其他注解和解释
总结 NotEmpty 用于集合类不能为null且size0 NotNull不能为null但可以为empty没有size的约束 NotBlank只用于String不能为null且trim()之后size0 Validated比Valid较为好用
结束语
以上则参数校验的注解使用和对比快去试试吧
如果大家觉得文章内容不错快去分享给更多小伙伴吧。
创作不易感谢大家的支持多多关注、分享、点赞您的鼓励是我前进的动力。