@NotBlank@NotNull@NotEmpty使用

为什么要用?

更加清晰的逻辑

降低空指针风险

提高代码可读性

增加代码可维护

最重要的是优雅

前提:

导入hibernate-validator依赖

<!-- Hibernate Validator -->
<dependency>
    <groupId>org.hibernate.validator</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>6.2.5.Final</version>
</dependency>

用法介绍 :

@NotBlank:

对字符串(String)进行校验;配合@Size注解可以校验字符串长度

(顺序是先判断空值再判断长度)

@NotNull:

基本数据类型(int、Integer、long、double...)和对象进行校验

配合@Max@Min可设置最大值或最小值

@NotEmpty

对集合类型(List...)进行校验;配合@Size注解可以校验集合长度

@Size:

message:自定义的错误信息

注:

对应的注解校验对应的参数,对应不上可能会出现注解不起作用或报错等问题

(建议多试试)

案例:

创建Student对象,参数对应校验的注解

核心代码

ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
//通过buildDefaultValidatorFactory()拿到一个验证器工厂,用于创建验证实例

Validator validator = factory.getValidator();
//getValidator拿到一个验证器对象

Set<ConstraintViolation<Student>> validate = validator.validate(student);
//调用validate对student对象进行验证,并返回一个Set集合

for (ConstraintViolation<Student> studentConstraintViolation : validate) {

    System.out.println(studentConstraintViolation.getMessage());
}
//遍历打印每个约束违规对象

测试:

封装Student对象,运行,控制台打印错误信息

 总结:

这是只是在main方法中进行简单测试

实际业务中,可在Controller层中加入@Valid注解,也能返回错误信息

也可以对insert或update等操作进行相对应的分组

或写公共方法,对传入的参数进行校验,抛出自定义异常并返回给前端Set内的错误信息

也可以对验证器进行自定义配置(这里使用的默认配置)

具体使用方法可按照业务需求进行调整和修改

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
@NotNull和@NotBlank是两种常用的校验注解,它们有以下区别: 1. @NotNull: 这个注解表示被标注的字段不能为null,但可以为空字符串。它通常用于对基本数据类型的非空校验上,可以结合@Size、@Max、@Min等注解对字段数值进行大小的控制。 2. @NotBlank: 这个注解表示被标注的字段不能为null,并且调用trim()方法后,字符串的长度必须大于0。注意,@NotBlank只能用在String类型的字段上。 举例来说,如果我们有一个String类型的字段name,使用@NotNull注解,那么name字段不能为null,但可以为空字符串""。如果使用@NotBlank注解,则name字段不能为null,并且不能为空字符串,即必须有实际的字符内容。 总结起来,@NotNull用于基本数据类型的非空校验,@NotBlank用于String类型的非空校验,并且需要有实际的字符内容。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [常用的校验注解之 @NotNull、@NotBlank、@NotEmpty 的区别](https://blog.csdn.net/weixin_49770443/article/details/109772162)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [Spring注解@NoNull、@NotEmpty、@NotBlank的区别及注解无效以及嵌套对象的无效解决办法](https://blog.csdn.net/wounler/article/details/124378538)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [常用校验注解@NotEmpty,@NotBlank,@NotNull,@Valid,@Validated用法区别,以及搭配 BindingResult使用,...](https://blog.csdn.net/weixin_46015018/article/details/122637042)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Artij

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值