Spring注解校验1

Spring字段校验的注解说明

限制

说明

@Null

限制只能为null

@NotNull

限制必须不为null

@AssertFalse

限制必须为false

@AssertTrue

限制必须为true

@DecimalMax(value)

限制必须为一个不大于指定值的数字

@DecimalMin(value)

限制必须为一个不小于指定值的数字

@Digits(integer,fraction)

限制必须为一个小数,且整数部分的位数不能超过integer,小数部分的位数不能超过fraction

@Future

限制必须是一个将来的日期

@Max(value)

限制必须为一个不大于指定值的数字

@Min(value)

限制必须为一个不小于指定值的数字

@Past

限制必须是一个过去的日期

@Pattern(value)

限制必须符合指定的正则表达式

@Size(max,min)

限制字符长度必须在min到max之间

@Past

验证注解的元素值(日期类型)比当前时间早

@NotEmpty

验证注解的元素值不为null且不为空(字符串长度不为0、集合大小不为0)

@NotBlank

验证注解的元素值不为空(不为null、去除首位空格后长度为0),不同于@NotEmpty,@NotBlank只应用于字符串且在比较时会去除字符串的空格

@Email

验证注解的元素值是Email,也可以通过正则表达式和flag指定自定义的email格式

Hiberate Validator还支持以下注解

注解

功能说明

@Email

被注解的元素必须是电子邮箱地址

@Length

被注释的字符串大小必须在指定的范围内

@NotEmpty

注释的字符串必须非空

@Range

注释的元素必须在合适的范围内

Springboot代码示例

1.在实体类中使用Spring或者Hiberate校验注解

1import lombok.Data; 2 3import javax.validation.constraints.NotBlank; 4import javax.validation.constraints.Size; 5 6/** 7 * 用户登录实体类 8 */ 9@Data 10public class User { 11 12 @NotBlank(message = "用户名不能为空") 13 private String username; 14 15 @NotBlank(message = "密码不能为空") 16 @Size(max = 20, min = 6, message = "密码长度在6-20字符之间") 17 private String password; 18 19}

2.在Controller中的请求方法参数里面加@Valid注解,否则实体类中校验注解无法生效

1import com.example.demo.model.User; 2import com.example.demo.util.R; 3import org.springframework.web.bind.annotation.PostMapping; 4import org.springframework.web.bind.annotation.RequestBody; 5import org.springframework.web.bind.annotation.RequestMapping; 6import org.springframework.web.bind.annotation.RestController; 7 8import javax.validation.Valid; 9 10/** 11 * 用户登录控制器 12 */ 13@RestController 14@RequestMapping(value = "/user") 15public class UserController { 16 17 /** 18 * 用户登录 19 * @param user 20 * @return 21 */ 22 @PostMapping(value = "/login") 23 public R login(@Valid @RequestBody User user){ 24 System.out.println("登录成功!"); 25 return R.ok(user); 26 } 27 28}

Postman请求测试

看到这个返回结果我们就可以代码就成功了。

更多阅读

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )