一样的做个记录,每次找资料耗费时间

场景: 嗯! 就是. 对接收参数进行合规性校验

目前我知道的有两种方式

第一种

直接写在Controller的方法中

public HttpResult test(@NotNull(message = "缺少参数:id") Long id)

第二种: 写在实体类中

/**  
 * @desc: 运单新增请求bean  
 * @author: Lt  
 * @date: 2024/3/25 17:17
 */
@Setter  
@Getter  
@Accessors(chain = true)  
public class AddWaybillReq {  

    @NotNull(message="缺少参数: orderId")  
    private Long orderId;  

    @NotNull(message = "缺少参数: orderNo")  
    private Long orderNo;  

    @NotNull(message = "缺少参数: truckId")  
    private Integer truckId;  

    //司机id  
    @NotNull(message = "缺少参数: truckId")  
    private Integer driverId;  

    //地址id  
    @NotNull(message = "缺少参数: addressId")  
    private Integer addressId;  
}

然后控制器类添加@Validated 方法添加@Valid注解

@Validated  
@RestController  
@RequestMapping("/task")  
public class TaskController{
@PostMapping("/addTask")  
public HttpResult addTask(@RequestBody @Valid AddWaybillReq addWaybillReq)

常用的几个校验注解

//被注释的元素必须为null
@Null  
//被注释的元素不能为null
@NotNull  
//被注释的元素必须为true
@AssertTrue  
//被注释的元素必须为false
@AssertFalse  
//被注释的元素必须是?个数字,其值必须?于等于指定的最?值
@Min(value)  
//被注释的元素必须是?个数字,其值必须?于等于指定的最?值
@Max(value)  
//被注释的元素必须是?个数字,其值必须?于等于指定的最?值
@DecimalMin(value)  
//被注释的元素必须是?个数字,其值必须?于等于指定的最?值
@DecimalMax(value)  
//被注释的元素的??必须在指定的范围内。
@Size(max,min) 
//被注释的元素必须是?个数字,其值必须在可接受的范围内
@Digits(integer,fraction) 
//被注释的元素必须是?个过去的?期
@Past  
//被注释的元素必须是?个将来的?期
@Future  
//被注释的元素必须符合指定的正则表达式。
@Pattern(value) 
//被注释的元素必须是电?邮件地址
@Email 
//被注释的字符串的??必须在指定的范围内
@Length 
//被注释的字符串必须?空
@NotEmpty  
//被注释的元素必须在合适的范围内
@Range