Spring Boot @Validation @Valid


@Valid是使用hibernate validation的時候使用

@Validated 是只用spring  Validator 校驗機制使用

基於方法參數的校驗對基本類型的校驗

 

例如:以下服務觸發第一個參數的驗證,確保其大小在8到10之間:

@Service
@Validated
public class MyBean {
   public Archive findByCodeAndAuthor(@Size(min = 8, max = 10) String code,
    Author author) {
    ...
   }
}

基於方法參數的校驗對象校驗


@ToString @Data @EqualsAndHashCode public class UserDTO { private Integer id; /** * {@code @NotNull javax.validation 注意引入的包 } */ @NotNull private String account; @NotNull private String name; @NotNull private String sex; @NotNull @Pattern(regexp="^[0-9]{11}$") private String phone; @NotNull @Email private String email; } 

 /**
     * 添加
     * 
     *@Validated必須添加否則只在對象字段上添加不會生效
     * @return ResponseEntity<Void>
     */
    @PostMapping
    public ResponseEntity<Void> save(@Validated  @RequestBody  UserDTO userDTO) {
        userService.insert(userDTO);
        return ResponseEntity.ok().build();
    }         

 

嵌套校驗:

第一種

package org.niugang.coding.dto;

import com.sun.org.apache.bcel.internal.generic.NEW;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import org.hibernate.validator.constraints.Length;
import org.springframework.validation.annotation.Validated;

import javax.validation.Valid;
import javax.validation.constraints.*;

/**
* 數據傳輸對象
*
* @author Created by niugang on 2018/12/26/13:43
*/
@ToString
@Data
@EqualsAndHashCode
@ApiModel
public class UserDTO {

@ApiModelProperty(value = "ID", notes = "添加不同傳id")
private Integer id;
/**
* {@code @NotNull javax.validation 的包 }
*/
@ApiModelProperty(value = "賬號")
@NotNull
private String account;
@ApiModelProperty(value = "姓名")
@NotNull
private String name;
@NotNull
@ApiModelProperty(value = "性別")
private String sex;
@NotNull
@Pattern(regexp = "^[0-9]{11}$")
@ApiModelProperty(value = "電話")
private String phone;
@NotNull
@Email
@ApiModelProperty(value = "郵箱")
private String email;

@Valid //嵌套校驗
public InnerUserDTo innerUserDTo= new InnerUserDTo();

@Data
private static class InnerUserDTo{
@NotEmpty
private String children;
}

}

 

第二種

package org.niugang.coding.dto;

import com.sun.org.apache.bcel.internal.generic.NEW;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import org.hibernate.validator.constraints.Length;
import org.springframework.validation.annotation.Validated;

import javax.validation.Valid;
import javax.validation.constraints.*;

/**
* 數據傳輸對象
*
* @author Created by niugang on 2018/12/26/13:43
*/
@ToString
@Data
@EqualsAndHashCode
@ApiModel
public class UserDTO {

@ApiModelProperty(value = "ID", notes = "添加不同傳id")
private Integer id;
/**
* {@code @NotNull javax.validation 的包 }
*/
@ApiModelProperty(value = "賬號")
@NotNull
private String account;
@ApiModelProperty(value = "姓名")
@NotNull
private String name;
@NotNull
@ApiModelProperty(value = "性別")
private String sex;
@NotNull
@Pattern(regexp = "^[0-9]{11}$")
@ApiModelProperty(value = "電話")
private String phone;
@NotNull
@Email
@ApiModelProperty(value = "郵箱")
private String email;

@Valid //嵌套校驗
  @NotNull
public InnerUserDTo innerUserDTo;

@Data
private static class InnerUserDTo{
@NotEmpty
private String children;
}

}

                                                           

                        

微信公眾號

                          


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM