当前位置: 代码网 > it编程>编程语言>Java > spring boot参数验证注解@NotNull、@NotBlank和@NotEmpty区别解析

spring boot参数验证注解@NotNull、@NotBlank和@NotEmpty区别解析

2024年06月01日 Java 我要评论
前言使用spring boot参数验证是常常会使用@notnull、@notblank和@notempty三个判断是否不为空的注解,中文都有不能为空的意思,大部分使用者都傻傻分清它们之间到底有什么区别

前言

使用spring boot参数验证是常常会使用@notnull、@notblank和@notempty三个判断是否不为空的注解,中文都有不能为空的意思,大部分使用者都傻傻分清它们之间到底有什么区别。今天就让咱们来一起探索它们之间的不同吧。

说明

注解名称功能
@notnull可用于所有类型的字段,判断字段不能为null
@notblank只能用于string类型的字段,判断字段不能为空串或空白(空格或制表符)字符串
@notempty可用于string类型和集合类型,用在string字段上时,字段不能为空串;用于集合时,集合不能为null或集合的size不为0

共同点:三个注解标注的字段都不能为null

举例

实体user.java

import lombok.data;
import javax.validation.constraints.notblank;
import javax.validation.constraints.notempty;
import javax.validation.constraints.notnull;
import java.util.list;
/**
 * @description todo
 * @author liqinglong
 * @datetime 2024-04-30 11:02
 * @version 1.0
 */
@data
public class user {
    @notblank(message = "姓名不为空")
    private string username;
    @notnull(message = "年龄不能为空")
    private integer age;
    @notempty(message = "权限列表不能空")
    private list<string> rolerlist;
}

测试类 validtest.java

import com.ruoyi.common.exception.serviceexception;
import org.apache.commons.collections.collectionutils;
import javax.validation.constraintviolation;
import javax.validation.validation;
import javax.validation.validator;
import javax.validation.validatorfactory;
import java.util.arraylist;
import java.util.list;
import java.util.set;
import java.util.stream.collectors;
/**
 * @description todo
 * @author liqinglong
 * @datetime 2024-04-30 11:07
 * @version 1.0
 */
public class validtest {
    public static void main(string[] args) {
        // bean 验证器
        validatorfactory vf = validation.builddefaultvalidatorfactory();
        validator validator = vf.getvalidator();
        user user = new user();
        //姓名为空格或制表符
        user.setusername("                      ");
        //年龄为null
        user.setage(null);
        //权限集合的长度为0
        list<string> roles = new arraylist<>();
        user.setrolerlist(roles);
        // 校验的业务对象:user,bean 类型:user
        set<constraintviolation<user>> checkset = validator.validate(user);
        if (collectionutils.isnotempty(checkset)) {
            // bean验证不通过
            throw new serviceexception(checkset.stream().map(constraintviolation::getmessage).collect(collectors.joining(",")));
        }
    }
}

运行结果:

在这里插入图片描述

其它各种情况,请同学自行测试,测试得出的结论欢迎到评论区留言。

到此这篇关于spring boot参数验证注解@notnull、@notblank和@notempty区别的文章就介绍到这了,更多相关spring boot参数验证注解内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com