注解的其他补充 --- NotNull、NotEmpty、NotBlank的区别

NotNullNotEmptyNotBlank的区别

@NotNull

不能为 Null, 但是可以为空字符串( "" )或者空白字符( " " )

一般用在 Integer 类型的基本数据类型的非空校验上,而且被其标注的字段可以使用 @size@Max@Min 对字段数值进行大小的控制

@NotEmpty

不能为 Null, 且长度必须大于0, 可以为空白字符( " " ), 一般用在集合类上或者数组上

@NotBlank

只能作用在接收的 String 类型上,注意是只能,不能为 null,而且调用 trim() 后,长度必须大于 0即:必须有实际字符

不同情况下,三种注解的返回结果

注解String s = null;String s = "";String s = " ";String s = "Hello World"
@NotNullfalsetruetruetrue
NotEmptyfalsefalsetruetrue
NotBlankfalsefalsefalsetrue

*** 在使用Validation验证框架时,要在控制器类的参数列表中对应DTO类的前面添加@Valid注解,否则会不起作用,示例如下: **

package com.example.passport.controller;

import com.example.passport.pojo.dto.AdminAddNewDTO;
import com.example.passport.service.IAdminService;
import com.example.passport.web.JsonResult;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.web.bind.annotation.*;

import javax.validation.Valid;

/**
 * @Date: 2022-12-31-14-55
 * @Author: evan.lijun
 * @description: The administrator manages the access control layer of the module
 */
@Validated
@RestController
@Api(tags = "1管理员管理模块")
@RequestMapping("/admins")
public class AdminController {
    @Autowired
    private IAdminService adminService;
    /* ... ... */
    @ApiOperation("添加账户")
    @PostMapping("/add-admin")
    @ApiOperationSupport(order = 101)
    @PreAuthorize("hasAuthority('/ams/admin/add-new')")
    // 因为参数列表的参数是一个被封装的类,为了使类中的validation框架起作用,需要添加@valid注解
    //							   ↓↓↓↓↓↓     ↓↓↓↓↓↓  
    public JsonResult<Void> addNew(@Valid AdminAddNewDTO adminAddNewDTO) {
        adminService.AddNew(adminAddNewDTO);
        return JsonResult.ok();
    }
}

最常用的校验注解

javax.validation.constraints.*;

注解说明
@Null/@NotNull限制元素只能/不能为Null
@AssertTrue/@AssertFalse限制元素必须为true/false
@Min(value)/@Max(value)限制元素必须为一个不小于/大于指定值的数字
@DecimalMin(value)/@DecimalMin(value)限制元素必须是一个数字,值必须大于/小于指定的值
@Size(max,min)限制字符长度必须在minmax的指定范围内(大于等于或小于等于)
@Digits(integer,fraction)限制元素必须为一个小鼠,且整数部分的位数不能超过integer、小数部分的位数不能超过fraction的在可接受的范围内
@Past限制元素(日期类型)必须是一个过去(已存在)的日期
@Future限制元素(日期类型)必须是一个将来(尚未到达)的日期
@Pattern(value)限制元素必须符合指定的正则表达式(注:该类型仅适用于字符串类型)
@Email限制元素值为是电子邮件地址,也可以通过正则表达式和flag指定自定义的email
@Length限制元素的大小必须在指定的范围内(一般用在String类型)
@NotEmpty限制字符串必须非空(不为null且不为空)
@Range限制元素必须在合适的范围内(一般用在Integer类型)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

北葵向暖1

希望大家能支持一下!!

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

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

打赏作者

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

抵扣说明:

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

余额充值