前言
使用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参数验证注解内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论