SpringBoot Validation快速实现数据校验的示例代码

网友投稿 417 2022-07-26


目录前言环境配置使用示例分组

前言

在实际开发中,肯定会经常遇到对参数字段进行校验的场景,虽然大多http://数情况下前端都会进行校验,但我们知道前端并不可信,所以后台也需要进行校验,通常我们只能写大量的if else来完成校验工作,而如果使用SpringBoot Validation则可以轻松的通过注解来完成。

环境配置

引入Jar包

org.springframework.boot

spring-boot-starter-web

org.springframework.boot

spring-boot-starter-validation

使用示例

@Data

@ToString

public class DemoEntity {

// 不能为空,比较时会除去空格

@NotBlank(message = "名称不能为空")

private String name;

// amount必须是一个大于等于5,小于等于10的数字

@DecimalMax(value = "10")

@DecimalMin(value = "5")

private BigDecimal amount;

// 必须符合email格式

@Email

private String email;

// size长度必须在5到10之间

@Size(max = 10, min = 5)

private String size;

// age大小必须在18到35之间

GONuxO @Min(value = 18)

@Max(value = 35)

private int age;

// user不能为null

@NotNull

private User user;

// 限制必须为小数,且整数位integer最多2位,小数位fraction最多为4位

@Digits(integer = 2, fraction = 4)

private BigDecimal digits;

// 限制必须为未来的日期

@Future

private Date future;

// 限制必须为过期的日期

@Past

private Date past;

// 限制必须是一个未来或现在的时间

@FutureOrPresent

private Date futureOrPast;

// 支持正则表达式

@Pattern(regexp = "^\\d+$")

private String digit;

}

注意:请求时,参数必须加上@Validated才能生效

@RestController

@Slf4j

@RequestMapping("/valid")

public class TestValidController {

@RequestMapping("/demo1")

public String demo12(@Validated @RequestBody DemoEntity demoEntity) {

try {

return "SUCCESS";

} catch (Exception e) {

log.error(e.getMessage(), e);

return "FAIL";

}

}

}

分组

有些时候,同一个参数在不能场景下校验的规则可能不一样,这时候我们就可以通过分组的方式来实现

实体类name属性设置了两种校验,分别针对groups为A和B的生效

@NotBlank(message = "名称不能为空", groups = A.class)

@Size(max = 10, min = 5, groups = B.class)

private String name;

只要在相对应的接口上选择A或者B即可

@RestController

@Slf4j

@RequestMapping("/valid")

public class TestValidController {

@RequestMapping("/demo1")

public String demo1(@Validated({A.class}) @RequestBody DemoEntity demoEntity) {

try {

return "SUCCESS";

} catch (Exception e) {

log.error(e.getMessage(), e);

return "FAIL";

}

}

@RequestMapping("/demo2")

public String demo2(@Validated({B.class}) @RequestBody DemoEntity demoEntity) {

try {

return "SUCCESS";

} catch (Exception e) {

log.error(e.getMessage(), e);

return "FAIL";

}

}

}

到此这篇关于利用SpringBoot Validation快速实现数据校验的文章就介绍到这了,更多相关SpringBoot Validation数据校验内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支http://持我们!


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java使用RedisTemplate如何根据前缀获取key列表
下一篇:Java+JFrame实现贪吃蛇小游戏
相关文章

 发表评论

暂时没有评论,来抢沙发吧~