玖辛奈的堕落浮殇

核心内容摘要

五月丁香,花开成诗,绽放你的无限风情
美女100%:解锁你的无限魅力,绽放专属光芒

灵肉之境的极致对话:王丹人体艺术的深度探索

目录

maven 依赖

全局异常处理

定义通用返回类

全局异常处理类

Valid / Validated

Valid最常用

ValidatedSpring 提供增强版

常见校验注解

NotNull最基础

NotEmpty比 NotNull 严格一点

NotBlank字符串专用最常用

Length字符串长度Hibernate 扩展

Size通用长度校验

Min / Max数值范围

Positive / PositiveOrZero推荐

Email邮箱校验

Pattern正则校验强力

AssertTrue / AssertFalse

测试

post 接口

get 请求

maven 依赖对于 Spring Boot

x :dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-validation/artifactId/dependency对于 Spring Boot

xJakarta 包名:依赖不变但代码里引用的包名发生变化javax.validation.* → jakarta.validation.*如果没引入这个依赖Valid 不生效校验注解写了等于没写

全局异常处理全局异常处理用于参数校验失败以及业务异常时将接口错误信息返回

定义通用返回类publicclassApiResultT{privateintcode;privateStringmessage;privateTdata;publicstaticTApiResultTfail(Stringmessage,Tdata){returnnewApiResult(400,message,data);}publicApiResult(){}publicApiResult(intcode,Stringmessage,Tdata){this.codecode;this.messagemessage;this.datadata;}publicintgetCode(){returncode;}publicvoidsetCode(intcode){this.codecode;}publicStringgetMessage(){returnmessage;}publicvoidsetMessage(Stringmessage){this.messagemessage;}publicTgetData(){returndata;}publicvoidsetData(Tdata){this.datadata;}}

全局异常处理类importorg.springframework.web.bind.MethodArgumentNotValidException;importorg.springframework.web.bind.annotation.ExceptionHandler;importorg.springframework.web.bind.annotation.RestControllerAdvice;importjavax.validation.ConstraintViolationException;importjava.util.HashMap;importjava.util.List;importjava.util.Map;importjava.util.stream.Collectors;RestControllerAdvicepublicclassGlobalExceptionHandler{/** RequestBody 校验失败 **/ExceptionHandler(MethodArgumentNotValidException.class)publicApiResultListMapString,StringhandleMethodArgumentNotValid(MethodArgumentNotValidExceptionex){ListMapString,Stringerrorsex.getBindingResult().getFieldErrors().stream().map(e-{MapString,StringmnewHashMap();m.put(field,e.getField());m.put(message,e.getDefaultMessage());returnm;}).collect(Collectors.toList());returnApiResult.fail(参数校验失败,errors);}/** RequestParam / PathVariable 校验失败 **/ExceptionHandler(ConstraintViolationException.class)publicApiResultListMapString,StringhandleConstraintViolation(ConstraintViolationExceptionex){ListMapString,Stringerrorsex.getConstraintViolations().stream().map(v-{MapString,StringmnewHashMap();// propertyPath 形如get.id / method.arg0m.put(field,v.getPropertyPath().toString());m.put(message,v.getMessage());returnm;}).collect(Collectors.toList());returnApiResult.fail(参数校验失败,errors);}}

Valid / Validated

Valid最常用importjakarta.validation.Valid;作用触发校验本身不定义规则常见位置Controller 方法参数、成员变量级联校验示例PostMapping(/add)publicvoidadd(RequestBodyValidUserDTOdto){}没有 ValidUserDTO 里的所有校验注解都不会执行

ValidatedSpring 提供增强版importorg.springframework.validation.annotation.Validated;特点支持分组校验可用在 类、方法上示例ValidatedRestControllerpublicclassUserController{}90% 场景用 Valid 即可

常见校验注解

NotNull最基础含义不能为 null可以是空字符串 “”适用类型所有对象类型Integer、Long、String、List…NotNull(message用户ID不能为空)privateLonguserId;

NotEmpty比 NotNull 严格一点含义不能为 null不能为 “”集合不能是空集合适用类型StringCollection / Map / ArrayNotEmptyprivateStringname;NotEmptyprivateListStringroles;

NotBlank字符串专用最常用含义不能为 null不能为 “”不能是 空白适用类型适用于 StringNotBlank(message用户名不能为空)privateStringusername;

Length字符串长度Hibernate 扩展适用类型只能用于 Stringimportorg.hibernate.validator.constraints.Length;Length(min6,max20,message长度必须在

位之间)privateStringpassword;

Size通用长度校验Size(min1,max

privateListLongids;适用类型StringCollectionMapArray与 Length 区别注解 适用范围Length : StringHibernateSize : String 集合标准

Min / Max数值范围Min(

Max(

privateIntegerage;⚠️ 不能校验字符串

Positive / PositiveOrZero推荐Positive// 0PositiveOrZero// 0PositiveprivateLongamount;

Email邮箱校验Email(message邮箱格式不正确)privateStringemail;

Pattern正则校验强力Pattern(regexp^1[

]\\d{9}$,message手机号格式错误)privateStringphone;

AssertTrue / AssertFalseAssertTrueprivateBooleanagree;

测试importorg.hibernate.validator.constraints.Length;importjavax.validation.Valid;importjavax.validation.constraints.Email;importjavax.validation.constraints.Min;importjavax.validation.constraints.NotBlank;importjavax.validation.constraints.NotEmpty;importjavax.validation.constraints.NotNull;importjavax.validation.constraints.Positive;importjava.util.List;publicclassStudent{NotBlank(message用户名不能为空)privateStringname;NotBlank(messagestuendId不能为空)Length(min6,max20,messagestuendId长度必须在

位之间)privateStringstuendId;NotNull(messageteacherName不能为null)privateStringteacherName;Min(value18,message年龄必须大于18岁)privateIntegerage;Email(message邮箱格式不正确)privateStringemail;Positive(messageamount要大于

privateLongamount;NotEmpty(messageroles不能为空)privateListStringroles;/** 级联校验如果要校验这个列表里的 Address 对象必须加 Valid **/NotNull(message地址列表不能为空)ValidprivateListSendMessageModeladdresses;//省略get、set 方法}importorg.hibernate.validator.constraints.Length;importjavax.validation.constraints.NotBlank;publicclassSendMessageModel{NotBlank(messagemobile不能为空)Stringmobile;Length(min6,max20,messagesign长度必须在

位之间)Stringsign;NotBlank(messagecontent不能为空)Stringcontent;//省略get、set 方法}

post 接口importcom.xiaohaitang.somedemo.exception.Student;importorg.springframework.web.bind.annotation.*;importjavax.validation.Valid;RestControllerRequestMapping(value/apiList)publicclassUsercontroller{PostMapping(value/v1/addStudents)publicStringvalidChechaAddStudents(RequestBodyValidStudentstudent){returnsuccess;}}入参{age:0,email:string,amount:0,addresses:[{}]}响应{code:400,message:参数校验失败,data:[{field:teacherName,message:teacherName不能为null},{field:email,message:邮箱格式不正确},{field:addresses[0].mobile,message:mobile不能为空},{field:amount,message:amount要大于0},{field:age,message:年龄必须大于18岁},{field:name,message:用户名不能为空},{field:addresses[0].content,message:content不能为空},{field:stuendId,message:stuendId不能为空},{field:roles,message:roles不能为空}]}

get 请求必须在类上增加Validated参数里的校验才会生效importorg.hibernate.validator.constraints.Length;importorg.springframework.validation.annotation.Validated;importorg.springframework.web.bind.annotation.*;importjavax.validation.constraints.NotBlank;importjavax.validation.constraints.NotNull;importjavax.validation.constraints.Positive;Validated// 必须启用方法参数校验RestControllerRequestMapping(value/apiList)publicclassUsercontroller{GetMapping(/test)publicStringtest(RequestParamNotBlank(messagename 不能为空)Length(min6,max20,messagename长度必须在

位之间)Stringname,RequestParamNotNull(messageid 不能为空)Positive(messageid 必须大于

Longid){returnsuccess;}}入参http://localhost:8080/apiList/test?id0nameaaa响应{code:400,message:参数校验失败,data:[{field:test.id,message:id 必须大于 0},{field:test.name,message:name长度必须在

位之间}]}

小妇人在线观看免费版电视剧-小妇人在线观看免费版电视剧应用

百度百家号客服电话人工服务

123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123