欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringBoot?Validation快速實現(xiàn)數(shù)據(jù)校驗的示例代碼

 更新時間:2022年06月07日 08:35:22   作者:碼拉松  
在實際開發(fā)中,肯定會經(jīng)常遇到對參數(shù)字段進(jìn)行校驗的場景,通常我們只能寫大量的if else來完成校驗工作,而如果使用SpringBoot Validation則可以輕松的通過注解來完成,接下來小編給大家介紹下利用SpringBoot?Validation快速實現(xiàn)數(shù)據(jù)校驗的示例代碼,需要的朋友參考下吧

前言

在實際開發(fā)中,肯定會經(jīng)常遇到對參數(shù)字段進(jìn)行校驗的場景,雖然大多數(shù)情況下前端都會進(jìn)行校驗,但我們知道前端并不可信,所以后臺也需要進(jìn)行校驗,通常我們只能寫大量的if else來完成校驗工作,而如果使用SpringBoot Validation則可以輕松的通過注解來完成。

環(huán)境配置

引入Jar包

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-validation</artifactId>
</dependency>

使用示例

@Data
@ToString
public class DemoEntity {
	
	// 不能為空,比較時會除去空格
    @NotBlank(message = "名稱不能為空")
    private String name;
	
	// amount必須是一個大于等于5,小于等于10的數(shù)字
    @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之間
    @Min(value = 18)
    @Max(value = 35)
    private int age;
	
	// user不能為null
    @NotNull
    private User user;
	
	// 限制必須為小數(shù),且整數(shù)位integer最多2位,小數(shù)位fraction最多為4位
    @Digits(integer = 2, fraction = 4)
    private BigDecimal digits;
	
	// 限制必須為未來的日期
    @Future
    private Date future;

	// 限制必須為過期的日期
    @Past
    private Date past;
	
	// 限制必須是一個未來或現(xiàn)在的時間
    @FutureOrPresent
    private Date futureOrPast;
	
	// 支持正則表達(dá)式
	@Pattern(regexp = "^\\d+$")
	private String digit;
}

注意:請求時,參數(shù)必須加上@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";
        }
    }
}

分組

有些時候,同一個參數(shù)在不能場景下校驗的規(guī)則可能不一樣,這時候我們就可以通過分組的方式來實現(xiàn)

實體類name屬性設(shè)置了兩種校驗,分別針對groups為A和B的生效

@NotBlank(message = "名稱不能為空", groups = A.class)
@Size(max = 10, min = 5, groups = B.class)
private String name;

只要在相對應(yīng)的接口上選擇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";
        }
    }
}

到此這篇關(guān)于利用SpringBoot Validation快速實現(xiàn)數(shù)據(jù)校驗的文章就介紹到這了,更多相關(guān)SpringBoot Validation數(shù)據(jù)校驗內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論