1.建一个springboot项目
2.导入相应的jar包
org.hibernate hibernate-validator6.0.1.Final org.glassfish jakarta.el3.0.3
pojo类中定义参数
@Data @EqualsAndHashCode(callSuper = false) @ApiModel(value="保存Article对象", description="文章删除状态 0 表示为删除 1 表示已经删除") public class SaveArticleVO { // @NotNull 限制传入的值不为null。作用在int,Integer等数值类型上时,在限制不为null的同时也不能为空字符串。作用在String上时,限制不为null但是可以为空字符串。作用在类上时,限制不为null。 // @NotEmpty 作用于String类型,限制不能为null,且长度不为0,可以是空格字符串。 // @NotBlank 作用于String类型,限制不能为null,且去掉空格,即trim之后,长度不为0。 // @Max 作用于数值类型,限制最大值(包含该最大值) // @Min 作用于数值类型,限制最小值(包含该最小值) // @Email 作用于String类型,验证是否符合email格式 private static final long serialVersionUID = 1L; @NotBlank(message = "文章标题不能为空") @ApiModelProperty(value = "文章标题") private String article_name; @NotBlank(message = "文章内容不能为空") @ApiModelProperty(value = "文章内容") private String article_content; @NotBlank(message = "文章简介不能为空") @ApiModelProperty(value = "文章简介") private String synopsis; public static Article saveArticleVO(SaveArticleVO article){ Article article1 = new Article(); article1.setArticle_name(article.getArticle_name()); article1.setArticle_content(article.getArticle_content()); article1.setSynopsis(article.getSynopsis()); return article1; } }第一种方法 controller 中使用参数校验
@RestController @RequestMapping("/article") @Api(tags = {"文章"}) @Validated //对本类中的方法 开启验证功能 public class ArticleController extends baseController{ @Autowired private IArticleService iArticleService; @PostMapping("/add") @ApiOperation("添加文章") public Results saveArticle(@Valid SaveArticleRo article) { return iArticleService.saveArticle(article); } }第二种方法 在service中使用
(推荐 controller层中可能接收的不仅仅是前端传来的数据 还可以是别的接口数据 比如 微信支付接口 调回数据 所以可以在service中处理全部的数据)
接口:
Results saveArticle(@Valid SaveArticleVO article);
类:
list验证:分组验证:
bean 参数之间 关联 关系 controller举例
官网
package org.hibernate.validator.referenceguide.chapter05.groupsequenceprovider; public class RentalCarGroupSequenceProvider implements DefaultGroupSequenceProvider{ @Override public List > getValidationGroups(RentalCar car) { List > defaultGroupSequence = new ArrayList >(); defaultGroupSequence.add( RentalCar.class ); if ( car != null && !car.isRented() ) { defaultGroupSequence.add( CarChecks.class ); } return defaultGroupSequence; } }
package org.hibernate.validator.referenceguide.chapter05.groupsequenceprovider; @GroupSequenceProvider(RentalCarGroupSequenceProvider.class)//核心 public class RentalCar extends Car { @AssertFalse(message = "The car is currently rented out", groups = RentalChecks.class) private boolean rented; public RentalCar(String manufacturer, String licencePlate, int seatCount) { super( manufacturer, licencePlate, seatCount ); } public boolean isRented() { return rented; } public void setRented(boolean rented) { this.rented = rented; } }
常用校验注解 @Null 只能是null @NotNull 不能为null 注意用在基本类型上无效,基本类型有默认初始值 @AssertFalse 必须为false @AssertTrue 必须是true 字符串/数组/集合检查:(字符串本身就是个数组) @Pattern(regexp="reg") 验证字符串满足正则 @Size(max, min) 验证字符串、数组、集合长度范围 @NotEmpty 验证字符串不为空或者null @NotBlank 验证字符串不为null或者trim()后不为空 数值检查:同时能验证一个字符串是否是满足限制的数字的字符串 @Max 规定值得上限int @Min 规定值得下限 @DecimalMax("10.8") 以传入字符串构建一个BigDecimal,规定值要小于这个值 @DecimalMin 可以用来限制浮点数大小 @Digits(int1, int2) 限制一个小数,整数精度小于int1;小数部分精度小于int2 @Digits 无参数,验证字符串是否合法 @Range(min=long1,max=long2) 检查数字是否在范围之间 这些都包括边界值 日期检查:Date/Calendar @Post 限定一个日期,日期必须是过去的日期 @Future 限定一个日期,日期必须是未来的日期 其他验证: @Vaild 递归验证,用于对象、数组和集合,会对对象的元素、数组的元素进行一一校验 @Email 用于验证一个字符串是否是一个合法的右键地址,空字符串或null算验证通过 @URL(protocol=,host=,port=,regexp=,flags=) 用于校验一个字符串是否是合法URl
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)