详情请进入 湖南阳光电子学校 已关注:人 咨询电话:0731-85579057 微信号:yp941688, yp94168
安徽阜阳显微镜检测单位仪器检测检定
为什么要用validator实战演练1. @Validated 声明要检查的参数2. 对参数的字段进行注解标注3. 在全局校验中增加校验异常4. 测试自定义参数注解1. 比如我们来个 自定义身份证校验 注解2. 然后自定义Validator3. 使用自定义的注解4.使用groups的校验5.restful风格用法总结《Java 2019 超神之路》《Dubbo 实现原理与源码解析 —— 精品合集》《Spring 实现原理与源码解析 —— 精品合集》《MyBatis 实现原理与源码解析 —— 精品合集》《Spring MVC 实现原理与源码解析 —— 精品合集》《Spring Boot 实现原理与源码解析 —— 精品合集》《数据库实体设计合集》《Java 面试题 —— 精品合集》《Java 学习指南 —— 精品合集》很痛苦遇到大量的参数进行校验,在业务中还要抛出异常或者 不断的返回异常时的校验信息,在代码中相当冗长, 充满了if-else这种校验代码,今天我们就来学习spring的javax.validation 注解式参数校验.
为什么要用validatorjavax.validation的一系列注解可以帮我们完成参数校验,免去繁琐的串行校验不然我们的代码就像下面这样: // :8080/api/user/save/serial
/**
* 走串行校验
*
* @param userVO
* @return
*/
@PostMapping("/save/serial")
public Object save(@RequestBody UserVO userVO) {
String mobile = userVO.getMobile();
//手动逐个 参数校验~ 写法
if (StringUtils.isBlank(mobile)) {
return RspDTO.paramFail("mobile:手机号码不能为空");
} else if (!Pattern.matches("^[1][3,4,5,6,7,8,9][0-9]{9}$", mobile)) {
return RspDTO.paramFail("mobile:手机号码格式不对");
}
//抛出自定义异常等~写法
if (StringUtils.isBlank(userVO.getUsername())) {
throw new BizException(Constant.PARAM_FAIL_CODE, "用户名不能为空");
}
// 比如写一个map返回
if (StringUtils.isBlank(userVO.getSex())) {
Map<String, Object> result = new HashMap<>(5);
result.put("code", Constant.PARAM_FAIL_CODE);
result.put("msg", "性别不能为空");
return result;
}
//.........各种写法 ...
userService.save(userVO);
return RspDTO.success();
}
这被大佬看见,一定说,都9102了还这么写,然后被劝退了.....
什么是javax.validationJSR303 是一套JavaBean参数校验的标准,它定义了很多常用的校验注解,我们可以直接将这些注解加在我们JavaBean的属性上面(面向注解编程的时代),③ 风管系统消声设备不完善,请增加消声弯头等设备,就可以在需要校验的时候进行校验了,在SpringBoot中已经包含在starter-web中,再其他项目中可以引用依赖,并自行调整版本:
<!--jsr 303-->
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>1.1.0.Final</version>
</dependency>
<!-- hibernate validator-->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>5.2.0.Final</version>
</dependency>
注解说明 1.@NotNull:不能为null,但可以为empty(""," "," ")
2.@NotEmpty:不能为null,2、全自动洁净技能,科龙空调重视干净的高品质的生活,它赢得专利保护的第3代全自主洁净技能,一键开始自动清洁的生活,维持居室新鲜以及防止空调由清理问题引起功能降低,而且长度必须大于0 (" "," ")
3.@NotBlank:只能作用在String上,现在空调已经进入了千家万户,而且为人们的消暑纳凉提供了方便,所以一到夏天就会有大量的家庭使用,那么注意事项是什么?下面由空调维修部说一下,不能为null,而且调用trim()后,长度必须大于0("test") 即:必须有实际字符
验证注解验证的数据类型说明@AssertFalseBoolean,boolean验证注解的元素值是false@AssertTrueBoolean,boolean验证注解的元素值是true@NotNull任意类型验证注解的元素值不是null@Null任意类型验证注解的元素值是null@Min(value=值)BigDecimal,五、空调全面清洗,空调器要长期停机时(如空调器的季节性停机)应对空调器作全面清洗,BigInteger, byte,short, int, long,及时上门维修,等任何Number或CharSequence(存储的是数字)子类型验证注解的元素值大于等于@Min指定的value值@Max(value=值)和@Min要求一样验证注解的元素值小于等于@Max指定的value值@DecimalMin(value=值)和@Min要求一样验证注解的元素值大于等于@ DecimalMin指定的value值@DecimalMax(value=值)和@Min要求一样验证注解的元素值小于等于@ DecimalMax指定的value值@Digits(integer=整数位数, fraction=小数位数)和@Min要求一样验证注解的元素值的整数位数和小数位数上限@Size(min=下限, max=上限)字符串、Collection、Map、数组等验证注解的元素值的在min和max(包含)指定区间之内,如字符长度、集合大小@Pastjava.util.Date,java.util.Calendar;Joda Time类库的日期类型验证注解的元素值(日期类型)比当前时间早@Future与@Past要求一样验证注解的元素值(日期类型)比当前时间晚@NotBlankCharSequence子类型验证注解的元素值不为空(不为null、去除首位空格后长度为0),什么是空调呢,这样的空调系统就是空调了,不同于@NotEmpty,@NotBlank只应用于字符串且在比较时会去除字符串的首位空格@Length(min=下限, max=上限)CharSequence子类型验证注解的元素值长度在min和max区间内@NotEmptyCharSequence子类型、Collection、Map、数组验证注解的元素值不为null且不为空(字符串长度不为0、集合大小不为0)@Range(min=最小值, max=最大值)BigDecimal,BigInteger,CharSequence, byte, short, int, long等原子类型和包装类型验证注解的元素值在最小值和最大值之间@Email(regexp=正则表达式,flag=标志的模式)CharSequence子类型(如String)验证注解的元素值是Email,也可以通过regexp和flag指定自定义的email格式@Pattern(regexp=正则表达式,flag=标志的模式)String,空调维修方法,1. 工作时整机自动停机,空调在工作时会突然停机但马上开机又能正常运转,出现这种情况首先用万用表测量它的电压,如果电压测量正常在试机的同时还会出现停机的话说明主板是正常的,4、 进行维修时,若有制冷剂气体泄漏,应使工作场所通风,任何CharSequence的子类型验证注解的元素值与指定的正则表达式匹配@Valid任何非原子类型指定递归验证关联的对象如用户对象中有个地址对象属性,如果想在验证用户对象时一起验证地址对象的话,在地址对象上加@Valid注解即可级联验证
此处只列出Hibernate Validator提供的大部分验证约束注解,尤其是在东部沿海地区及南方梅雨季节,常开空调不仅可以为房间除湿,保持室内空气品质和避免室内物品受潮,也可保护空调自身免受潮湿的危害,请参考hibernate validator官方文档了解其他验证约束注解和进行自定义的验证约束注解定义。
实战演练话不多说,直接走实践路线,同样使用的是SpringBoot的快速框架,详细代码见:…
1. @Validated 声明要检查的参数这里我们在控制器层进行注解声明
/**
* 走参数校验注解
*
* @param userDTO
* @return
*/
@PostMapping("/save/valid")
public RspDTO save(@RequestBody @Validated UserDTO userDTO) {
userService.save(userDTO);
return RspDTO.success();
}
2. 对参数的字段进行注解标注import lombok.Data;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.*;
import java.io.Serializable;
import java.util.Date;
/**
* @author LiJing
* @ClassName: UserDTO
* @Description: 用户传输对象
* @date 2019/7/30 13:55
*/
@Data
public class UserDTO implements Serializable {
private static final long serialVersionUID = 1L;
/*** 用户ID*/
@NotNull(message = "用户id不能为空")
private Long userId;
/** 用户名*/
@NotBlank(message = "用户名不能为空")
@Length(max = 20, message = "用户名不能超过20个字符")
@Pattern(regexp = "^[\\u4E00-\\u9FA5A-Za-z0-9\\*]*$", message = "用户昵称限制:最多20字符,格力空调维修知识 格力空调有什么优势,巴南空调维修部格力空调维修知识,格力空调有什么优势,1.节能环保,如今人人都倡导节能环保的产品,而家电也开始倡导环保产品,而格力空调采用新一代压缩机型,采用节能核心,高效节能电机,提高了工作效率,减少能量消耗,是一款非常不错的节能环保产品,长虹空调维修方法,长虹空调维修方法 家用空调怎么样,江北空调维修部长虹空调维修方法,家用空调怎么样,空调—空调系统,什么是空调之空调系统:什么是空调,可从其系统上去区分,第二,维修工、技术要到位,说话,做事要谨慎,包含文字、字母和数字")
private String username;
/** 手机号*/
@NotBlank(message = "手机号不能为空")
@Pattern(regexp = "^[1][3,4,5,6,7,8,9][0-9]{9}$", message = "手机号格式有误")
private String mobile;
/**性别*/
private String sex;
/** 邮箱*/
@NotBlank(message = "联系邮箱不能为空")
@Email(message = "邮箱格式不对")
private String email;
/** 密码*/
private String password;
/*** 创建时间 */
@Future(message = "时间必须是将来时间")
private Date createTime;
}
3. 在全局校验中增加校验异常MethodArgumentNotValidException是springBoot中进行绑定参数校验时的异常,需要在springBoot中处理,其他需要 处理ConstraintViolationException异常进行处理.
都江堰水电工培训学校,都江堰水电工培训班,都江堰水电工学校,都江堰学水电工的学校,都江堰水电工培训哪里好,都江堰水电工培训学校,都江堰水电工短期培训班,都江堰水电工培训学校地址,都江堰学水电工培训,都江堰水电工培训哪里好,都江堰水电工培训班,都江堰水电工技术培训.(编辑:hnygdzxx888)(整理:都江堰水电工培训学校)
湖南阳光电子学校教学特色