精华内容
下载资源
问答
  • spring 注解验证@NotNull等使用方法

    万次阅读 多人点赞 2018-05-04 17:45:40
    @NotNull 被注释的元素不能为null @AssertTrue 被注释的元素必须为true @AssertFalse 被注释的元素必须为false @Min(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值 @Max(value) 被注释的元素...

    点击链接加入群聊【java菜鸟学习】:https://jq.qq.com/?_wv=1027&k=5afU7nS
    群号:124569404
    常用标签

    @Null  被注释的元素必须为null
    @NotNull  被注释的元素不能为null
    @AssertTrue  被注释的元素必须为true
    @AssertFalse  被注释的元素必须为false
    @Min(value)  被注释的元素必须是一个数字,其值必须大于等于指定的最小值
    @Max(value)  被注释的元素必须是一个数字,其值必须小于等于指定的最大值
    @DecimalMin(value)  被注释的元素必须是一个数字,其值必须大于等于指定的最小值
    @DecimalMax(value)  被注释的元素必须是一个数字,其值必须小于等于指定的最大值
    @Size(max,min)  被注释的元素的大小必须在指定的范围内。
    @Digits(integer,fraction)  被注释的元素必须是一个数字,其值必须在可接受的范围内
    @Past  被注释的元素必须是一个过去的日期
    @Future  被注释的元素必须是一个将来的日期
    @Pattern(value) 被注释的元素必须符合指定的正则表达式。
    @Email 被注释的元素必须是电子邮件地址
    @Length 被注释的字符串的大小必须在指定的范围内
    @NotEmpty  被注释的字符串必须非空
    @Range  被注释的元素必须在合适的范围内
    

    example :
    vo 页面传过来的数据进行校验
    inferface : 只是作为标记一个组别 可以在vo验证的某个字段上面加入多个组别,这样没有加入的组别就不会验证这个字段
    controller: 需要 加入 @Validated (GroupInterface1.class) //GroupInterface1.class是定义的分组 GroupInterface2.class 需要校验的字段是不会验证的

    VO:

    public class User implements Serializable {
        /**
         * 主键
         */
        @NotNull(message = "primary is not null",groups = {GroupInterface1.class})
    	private Long id;
    	
    	@Pattern(regexp = "[0123456789]",groups = {GroupInterface1.class,GroupInterface2.class},message = "hava a error Date")
    	private Long maxDiscountAmount;
    	
    
    	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    	private Date createTime;
    
    	@Future(message = "expireTime is not less than now",groups = {GroupInterface1.class,GroupInterface2.class})
    	@NotNull(message = "expireTime is not null",groups = {GroupInterface1.class,GroupInterface2.class})
    	private Date expireTime;
    
    }
    
    

    另外一个例子:

    import java.util.Date;
    
    import javax.validation.constraints.DecimalMax;
    import javax.validation.constraints.DecimalMin;
    import javax.validation.constraints.Email;
    import javax.validation.constraints.Future;
    import javax.validation.constraints.Max;
    import javax.validation.constraints.Min;
    import javax.validation.constraints.NotNull;
    import javax.validation.constraints.Size;
    
    import org.hibernate.validator.constraints.Range;
    import org.springframework.format.annotation.DateTimeFormat;
    
    /**** imports ****/
    public class ValidatorPojo {
    
    	// 非空判断
    	@NotNull(message = "id不能为空")
    	private Long id;
    
    	@Future(message = "需要一个将来日期") // 只能是将来的日期
    	// @Past //只能去过去的日期
    	@DateTimeFormat(pattern = "yyyy-MM-dd") // 日期格式化转换
    	@NotNull // 不能为空
    	private Date date;
    
    	@NotNull // 不能为空
    	@DecimalMin(value = "0.1") // 最小值0.1元
    	@DecimalMax(value = "10000.00") // 最大值10000元
    	private Double doubleValue = null;
    
    	@Min(value = 1, message = "最小值为1") // 最小值为1
    	@Max(value = 88, message = "最大值为88") // 最大值88
    	@NotNull // 不能为空
    	private Integer integer;
    
    	@Range(min = 1, max = 888, message = "范围为1至888") // 限定范围
    	private Long range;
    
    	// 邮箱验证
    	@Email(message = "邮箱格式错误")
    	private String email;
    
    	@Size(min = 20, max = 30, message = "字符串长度要求20到30之间。")
    	private String size;
    
    	public Long getId() {
    		return id;
    	}
    
    	public void setId(Long id) {
    		this.id = id;
    	}
    
    	public Date getDate() {
    		return date;
    	}
    
    	public void setDate(Date date) {
    		this.date = date;
    	}
    
    	public Double getDoubleValue() {
    		return doubleValue;
    	}
    
    	public void setDoubleValue(Double doubleValue) {
    		this.doubleValue = doubleValue;
    	}
    
    	public Integer getInteger() {
    		return integer;
    	}
    
    	public void setInteger(Integer integer) {
    		this.integer = integer;
    	}
    
    	public Long getRange() {
    		return range;
    	}
    
    	public void setRange(Long range) {
    		this.range = range;
    	}
    
    	public String getEmail() {
    		return email;
    	}
    
    	public void setEmail(String email) {
    		this.email = email;
    	}
    
    	public String getSize() {
    		return size;
    	}
    
    	public void setSize(String size) {
    		this.size = size;
    	}
    
    	/**** setter and getter ****/
    
    }
    

    此时controller应该要加上@Valid ,否则不会验证!

    	/***
    	 * 解析验证参数错误
    	 * @param vp —— 需要验证的POJO,使用注解@Valid 表示验证
    	 * @param errors  错误信息,它由Spring MVC通过验证POJO后自动填充
    	 * @return 错误信息Map
    	 */
    	@RequestMapping(value = "/valid/validate")
    	@ResponseBody
    	public Map<String, Object> validate(
    	        @Valid @RequestBody ValidatorPojo vp, Errors errors) {
    	    Map<String, Object> errMap = new HashMap<>();
    	    // 获取错误列表
    	    List<ObjectError> oes = errors.getAllErrors();
    	    for (ObjectError oe : oes) {
    	        String key = null;
    	        String msg = null;
    	        // 字段错误
    	        if (oe instanceof FieldError) {
    	            FieldError fe = (FieldError) oe;
    	            key = fe.getField();// 获取错误验证字段名
    	        } else {
    	            // 非字段错误
    	            key = oe.getObjectName();// 获取验证对象名称
    	        }
    	        // 错误信息
    	        msg = oe.getDefaultMessage();
    	        errMap.put(key, msg);
    	    }
    	    return errMap;
    	}
    

    GROUP interface(分组)

    展开全文
  •  1.1 nullnot null  nullnot null是mysql的字段属性,或称为数据类型的属性,不属于任何类型。null值也不等同于空值,空值是不占用存储空间的,null占用存储空间,如对myisam表占用1bit额外存储空间。  1.2...
    1
     一些概念
        1.1 null与not null

        null 和 not null是mysql的字段属性,或称为数据类型的属性,不属于任何类型。null值也不等同于空值,空值是不占用存储空间的,null占用存储空间,如对myisam表占用1bit额外存储空间。
        1.2 is null与 is not null
        is null和 is not null是mysql的运算符。查询某字段为空时用is null,而不能使用"=null",因为mysql中的null不等于任何其他值,也不等于另外一个null,优化器会把"=null"的查询过滤掉而不返回任何数据;查询某字段为非空时使用is not null。
        1.3 ifnull():语法如下:
        IFNULL(expr1,expr2)
        如果expr1不是NULL,IFNULL()返回expr1,否则它返回expr2。IFNULL()返回一个数字或字符串值,取决于它被使用的上下文环境。
    2 创建测试表及数据

        2.1 创建测试

    [sql] view plain copy
    1. CREATE   TABLE PLAYERS  
    2.         (PLAYERNO       INTEGER      NOT NULL,  
    3.          NAME           CHAR(15)     NOT NULL,  
    4.          INITIALS       CHAR(3)      NOT NULL,  
    5.          BIRTH_DATE     DATE                 ,  
    6.          SEX            CHAR(1)      NOT NULL,  
    7.          JOINED         SMALLINT     NOT NULL,  
    8.          STREET         VARCHAR(30)  NOT NULL,  
    9.          HOUSENO        CHAR(4)              ,  
    10.          POSTCODE       CHAR(6)              ,  
    11.          TOWN           VARCHAR(30)  NOT NULL,  
    12.          PHONENO        CHAR(13)             ,  
    13.          LEAGUENO       CHAR(4)              ,  
    14.          PRIMARY KEY    (PLAYERNO));  
        2.2 插入测试数据

    [sql] view plain copy
    1. INSERT INTO PLAYERS VALUES (2, 'Everett''R''1948-09-01''M', 1975, 'Stoney Road''43''3575NH''Stratford''070-237893''2411');  
    2. INSERT INTO PLAYERS VALUES (6, 'Parmenter''R''1964-06-25''M', 1977, 'Haseltine Lane''80''1234KK''Stratford''070-476537''8467');  
    3. INSERT INTO PLAYERS VALUES (7, 'Wise''GWS''1963-05-11''M', 1981, 'Edgecombe Way''39''9758VB''Stratford''070-347689'NULL);  
    4. INSERT INTO PLAYERS VALUES (8, 'Newcastle''B''1962-07-08''F', 1980, 'Station Road','4''6584WO''Inglewood''070-458458''2983');  
    5. INSERT INTO PLAYERS VALUES (27, 'Collins''DD''1964-12-28''F', 1983, 'Long Drive','804''8457DK''Eltham''079-234857''2513');  
    6. INSERT INTO PLAYERS VALUES (28, 'Collins''C''1963-06-22''F', 1983, 'Old Main Road','10''1294QK''Midhurst''010-659599'NULL);  
    7. INSERT INTO PLAYERS VALUES (39, 'Bishop''D''1956-10-29''M', 1980, 'Eaton Square','78''9629CD''Stratford''070-393435'NULL);  
    8. INSERT INTO PLAYERS VALUES (44, 'Baker''E''1963-01-09''M', 1980, 'Lewis Street','23''4444LJ''Inglewood''070-368753''1124');  
    9. INSERT INTO PLAYERS VALUES (57, 'Brown''M''1971-08-17''M', 1985, 'Edgecombe Way','16''4377CB''Stratford''070-473458''6409');  
    10. INSERT INTO PLAYERS VALUES (83, 'Hope''PK''1956-11-11''M', 1982, 'Magdalene Road','16A''1812UP''Stratford''070-353548''1608');  
    11. INSERT INTO PLAYERS VALUES (95, 'Miller''P''1963-05-14''M', 1972, 'High Street','33A''5746OP''Douglas''070-867564'NULL);  
    12. INSERT INTO PLAYERS VALUES (100, 'Parmenter''P''1963-02-28''M', 1979, 'Haseltine Lane','80''6494SG''Stratford''070-494593''6524');  
    13. INSERT INTO PLAYERS VALUES (104, 'Moorman''D''1970-05-10''F', 1984, 'Stout Street','65''9437AO''Eltham''079-987571''7060');  
    14. INSERT INTO PLAYERS VALUES (112, 'Bailey''IP''1963-10-01''F', 1984, 'Vixen Road','8''6392LK''Plymouth''010-548745''1319');  

    3 实例分析

        3.1 实例1

        获取拥有一个联盟会员号码的每个球员的号码和联盟会员的号码。

    [sql] view plain copy
    1. select playerno, leagueno  
    2. from players  
    3. where leagueno is not null;  

        注意:is null不能用=号代替。


        3.2 实例2

        如果要获得非联盟成员的所有球员的信息,只需将is not null改为is null 即可

    [sql] view plain copy
    1. select playerno, leagueno  
    2. from players  
    3. where leagueno is null;  

        3.3 实例3 isfull()函数1

    [sql] view plain copy
    1. mysql> SELECT IFNULL(1,'test');    
    2. +------------------+  
    3. | IFNULL(1,'test') |  
    4. +------------------+  
    5. | 1                |  
    6. +------------------+  
        由于 expr1 是 1,不为 NULL,所以函数返回1.
    [sql] view plain copy
    1. mysql> SELECT IFNULL(1/0,'test');  
    2. +--------------------+  
    3. | IFNULL(1/0,'test') |  
    4. +--------------------+  
    5. | test               |  
    6. +--------------------+  
        由于 expr1 是NULL,所以函数返回test.

    4 一些注意事项

        4.1 排序时MySQL将null作为最小值处理。

        4.2 not null字段不能插入null,但可以插入空值。

    展开全文
  • alter table 【表名】 alter 【字段名】 set not null; alter table jcz alter address set not null; 设置可为空 alter table 【表名】 alter 【字段名】 drop not null; alter table jcz alter address drop ...

    设置不可为空

    alter table 【表名】 alter 【字段名】 set not null;
    
    alter table jcz alter address set not null;
    

    设置可为空

    alter table 【表名】 alter 【字段名】 drop not null;
    
    alter table jcz alter address drop not null;
    

    字段中数据有空值是,无法设为不可为空

    展开全文
  • 关于@NotNull 和 @Nullable

    万次阅读 多人点赞 2018-08-20 09:19:08
    阅读spring源码发现里面用到两个注解@NotNull 和 @Nullable,现在做一个简单的分析 参考文档: 避免Java应用中NullPointerException的技巧和最佳实践 安卓中的@Nullable和NotNull 注释 在写程序的时候你可以...

    阅读spring源码发现里面用到两个注解@NotNull 和 @Nullable,现在做一个简单的分析

    参考文档:

    避免Java应用中NullPointerException的技巧和最佳实践

    安卓中的@Nullable和NotNull 注释

    在写程序的时候你可以定义是否可为空指针。通过使用像@NotNull和@Nullable之类的annotation来声明一个方法是否是空指针安全的。现代的编译器、IDE或者工具可以读此annotation并帮你添加忘记的空指针检查,或者向你提示出不必要的乱七八糟的空指针检查。IntelliJ和findbugs已经支持了这些annotation。这些annotation同样是JSR 305的一部分,但即便IDE或工具中没有,这个annotation本身可以作为文档。看到@NotNull和@Nullable,程序员自己可以决定是否做空指针检查。顺便说一句,这个技巧对Java程序员来说相对比较新,要采用需要一段时间。

    用法

    如果可以传入NULL值,则标记为@Nullable,如果不可以,则标注为@Nonnull。那么在我们做一些不安全严谨操作的编码操作时,这些注释会给我们一些警告。如下是我看spring源码时,发现用到@Nullable,借此源码做个测试:

    public FileSystemXmlApplicationContext(String[] configLocations, boolean refresh, @Nullable ApplicationContext parent) throws BeansException {
        super(parent);
        this.setConfigLocations(configLocations);
        if (refresh) {
            this.refresh();
        }
    
    }

    我们把@Nullable改成@Nonnull,然后发现调用该方法的地方出现告警:

    public FileSystemXmlApplicationContext(String... configLocations) throws BeansException {
         // here warning   
         this(configLocations, true, (ApplicationContext)null);
    }

     

     

     

    展开全文
  • Mysql将某个字段修改为null(从不允许为空not null修改为 null
  • mysql nullnot null

    千次阅读 2015-04-16 14:56:14
    NULL 和 空字符 NULLNOT NULL的区别
  • SQL NOT NULL 约束

    千次阅读 2019-01-27 09:52:11
    SQL NOT NULL 约束 在默认的情况下,表的列接受 NULL 值。 SQL NOT NULL 约束 NOT NULL 约束强制列不接受 NULL 值。 NOT NULL 约束强制字段始终包含值。这意味着,如果不向字段添加值,就无法插入新记录或者更新记录...
  • ID INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, // ID列为无符号整型,该列值不可以为空,并不可以重复,而且自增。 NAME VARCHAR(5) NOT NULL default '' ) AUTO_INCREMENT = 100;(ID列从100开始自增) ...
  • mysql设置not nullnull区别

    千次阅读 2017-12-28 15:28:37
    mysql设置not nullnull区别
  • padas.notnull函数

    千次阅读 2019-04-19 19:27:46
    pandas的notnull函数,用于返回非空值的集合。下面举一个例子。 1,构造一个DataFrame df = pd.DataFrame([['1', 'bee', 'cat'], [None, None, 'fly']]) 2,测试notnull函数 a = pd.notnull(df[0]) 将a打印...
  • PL/SQL想把某列字段设为NOT NULL发现报错 找了好久才发现,原因是对应表的主键约束忘了开启 补充:个人感觉(还没有抽空进行深入研究)出现这种错误,要往主外键还有关联表的主外键角度找问题。 ...
  • nullnot nullnull与空值''的区别

    千次阅读 2019-05-29 20:27:23
    相信很多用了MySQL很久的人,对这两个字段属性...2.为毛not null的效率比null高 3.判断字段不为空的时候,到底要 select * from table where column <> '' 还是要用 select * from table wherecolumn is not ...
  • mysql如何将null修改成not null

    千次阅读 2020-06-09 20:13:41
    修改字段类型命令: alter table 表名 modify 字段名称 数据类型 not null;
  • postgresql 修改表的字段由NOT NULL修改为NULL: alter table mytable alter test drop not null; 参考地址:http://www.bufeihua.cn/p/57373753b98b3512bf9fd041
  • MySQL中对NULL进行判断必须是is null或is not null
  • 解决方法如图: controller层 vo.param层 ...父类验证注解要使用@NotEmpty 不能使用 @NotNull,否则验证无效的,反正笔者是没有成功过 转载于:https://www.cnblogs.com/dqcer/p/9123139.html...
  • MySQL IS NOT NULL、!=NULL、ISNULL() 详解

    万次阅读 2018-03-25 11:20:53
    … 所有的判断,结果都是false,所有只能用 IS NULL 进行判断默认情况下,推荐使用 IS NOT NULL去判断,因为 SQL 默认情况下对 !=NULL 的判断会永远返回 0 行,但没有语法错误如果一定想要使用 !=NULL 来判断,需要...
  • mysql探究之nullnot null

    千次阅读 2017-01-06 14:56:20
    相信很多用了mysql很久的人,对这两个字段属性的...2、为毛not null的效率比null高 3、判断字段不为空的时候,到底要 select * from table where column <> '' 还是要用 select * from table where column is...
  • 【sql 语句】 =null 没有这种写法 只有 is null 和 is not null 这种写法 查了半天bug都没看出来,原来是判断 null的这里用的 = 没有 = null 这种表示 只有 is null 没有 != null 只有 is not null ...
  • @NotNull注解不生效原因

    千次阅读 2020-12-09 18:30:55
    @NotNull注解不生效原因 在实体类的属性上加上@NotNull,如下图 @Data public class User(){ @NotNull private Integer age; @NotNull(message = "用户名不能为空") private String name; } 需要在controller...
  • Mysql将某个字段修改为null(从不允许为空not null修改为 null
  • mysql is not null 和 != null的区别

    千次阅读 2018-10-29 16:39:38
    is not null != null 其中null不能用 !=,=,&lt;&gt; 来判断 虽然不会报错,但数据不正确。因为SQL默认情况下对!= Null的判断会永远返回false。 应该用,is not null 或 is null 。 ...
  • springboot中@NotEmpty ,@NotNull的区别

    千次阅读 2018-11-13 17:40:16
    2 @NotNull:不能为null,但可以为empty,没有Size的约束。 官方文档解释: @NotNull: The CharSequence, Collection, Map or Array object is not null, but can be empty. @NotEmpty: The CharSequen...
  • @NotNull相关注解作用

    千次阅读 2019-11-29 18:13:13
    简述@NotNull相关注解作用
  • Java注解@NotNull

    千次阅读 2019-04-03 13:47:47
    @NotNull 被注释的元素不能为null @AssertTrue 被注释的元素必须为true @AssertFalse 被注释的元素必须为false @Min(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值 @Max(value) 被注释的元素...
  • @NotEmpty和@NotBlank和@NotNull

    千次阅读 2019-05-24 15:05:25
    @NotEmpty、@NotBlank和、@NotNull都来自于包org.hibernate.validator.constraints.* @NotNull:不能为null,但可以为empty,用在基本类型上 @NotEmpty:不能为null,而且长度必须大于0,用在集合类上面 @NotBlank:...
  • Mysql中is null 和 is not null的使用

    千次阅读 2020-03-17 16:51:28
    MySQL 使用 SQL SELECT 命令及 WHERE 子句来读取数据表中的数据,但是当提供的查询条件字段为 NULL 时,该命令可能...IS NOT NULL: 当列的值不为 NULL, 运算符返回 true。 <=>: 比较操作符(不同于 = 运算符)...
  • mysql 中is not null 和 !=null的区别

    千次阅读 2020-05-15 09:51:54
    今天做定时任务,需要用到一个mysql查询 于是我就写: sqlcondition=" and fplsh!...找到了,根据条件因素的唯一变化原理,我很明智的判断出了是is notnull和!=null的区别 我知道了他们的区别,但是为...
  • 分析: IS NULL 使用了索引 , IS NOT NULL 没有走索引 二.索引列key 默认值为'123' 允许为空 分析: IS NULL 使用了索引 , IS NOT NULL 没有走索引 三.索引列key 默认值为'123' 不允许为空 分析: IS...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 189,887
精华内容 75,954
关键字:

notnull