那些容易使用混淆的注解

在日常开发过程中,大家经常使用@NotNull、@NotEmpty、@NotBlank等注解来实现我们对参数的校验,这些注解的使用不仅能为我们减少很多不必要的重复校验代码,还能够使得我们的代码看起来更加优雅。但由于这三个注解的作用类似,很多朋友在开发过程中,往往容易使用混淆,所以在这里给大家讲解一下如何正确的使用这些注解。

首先,先明确一下,我们使用的这几个注解所在的包

javax.validation.constraints.NotNull

javax.validation.constraints.NotBlank

javax.validation.constraints.NotEmpty

1. @NotNull

  • 作用:确保字段不为 null

  • 适用场景:任何可以是 null 的对象字段(如 IntegerString、集合类型等)。

  • 特点:只判断是否为 null,不关心对象内部的内容,比如字符串长度或集合是否为空。

  • 常见用法

    public class User {
        @NotNull(message = "ID不能为空")
        private Integer id;
    }
    
    
    • 用于确保字段有值,特别是必需字段的校验。
    • 常见于数据库 ID 或者外键字段,确保不为 null

2. @NotEmpty

  • 作用:确保集合、数组或字符串字段不为 null 且不为空(长度大于 0)。

  • 适用场景:用于集合(如 ListSetMap)、数组,以及字符串类型。

  • 特点:检查字段不为 null 且包含至少一个元素或字符。

  • 常见用法

    public class Book {
        @NotEmpty(message = "书名不能为空")
        private String title;
    
        @NotEmpty(message = "标签列表不能为空")
        private List<String> tags;
    }
    
    
    • 用于确保集合类型、数组类型、字符串不为空。
    • 常用于表单、接口请求中,要求提交非空字符串、列表等字段的校验。

3. @NotBlank

  • 作用:确保字符串不为 null 且至少包含一个非空白字符(忽略空格、制表符等)。

  • 适用场景:仅用于 String 类型。

  • 特点:更严格的字符串校验,不仅判断 null 和空串,还排除只有空格的情况。

  • 常见用法

    public class Comment {
        @NotBlank(message = "评论内容不能为空")
        private String content;
    }
    
    
    • 用于确保输入的字符串有实际内容,避免只填空格的情况。
    • 常用于表单字段中,特别是需要确保用户输入有效内容的场景。

使用总结

注解主要作用适用类型判断标准典型场景
@NotNull确保字段不为 null所有对象类型不为 null基本字段、主键、外键等需要有值的情况
@NotEmpty确保集合、字符串不为空集合、数组、字符串不为 null 且至少包含一个元素或字符集合、数组需要至少有一个有效值的情况
@NotBlank确保字符串有实际内容字符串不为 null,且至少有一个非空白字符输入需要有实际内容的情况(避免空白输入)

上面就是我们使用的这三个注解的具体区别,还有各自的领域与含义。

并且我们在使用的时候,还需要注意一点,那就是在使用的时候,在参数的位置需要添加上@Validated,否则我们的注解也是不起作用的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值