@Data示例代码
工作中看别人代码中的一个入参使用了@Data注解,因为没见过,稍微研究一下。
@Data
public class BusinessParam implements Serializable {
private static final long serialVersionUID = 219950064613629903L;
@NotBlank(message = "userSerial不能为空")
private String userSerial;
@NotNull(message = "userId不能为空")
private Integer userId;
@NotNull(message = "tradeType不能为空")
private Integer tradeType;
}
作用
@Data注解在基本类上时,可以简化java代码编写,为该类提供读写属性即getter和setter方法,还提供了equals(),hashCode(),toString()方法。可以简化代码结构。我们仍然可以在代码中写如下代码:
BusinessParam param= new BusinessParam();
param.setUserId(12);
param.getUserId();
使用
参考@不爱编程的设计师
@Valid示例代码
@PostMapping("/qrcodepay")
public PreCreateOrderRsp qrcodepay(BusinessParam businessParam, @Valid PreCreateReq preCreateReq, BindingResult errors) throws Exception {
PreCreateOrderReq preCreateOrderReqAPI = new PreCreateOrderReq();
BeanUtils.copyProperties(businessParam,preCreateOrderReqAPI);
BeanUtils.copyProperties(preCreateReq,preCreateOrderReqAPI);
return payApiService.qrcodePay(preCreateOrderReqAPI);
}
作用
@Valid作用是参数校验,BindingResult是获取验证结果
配合使用:
@PostMapping("/createUser2")
public String createUser2(@Valid UserInfo userInfo, BindingResult bindingResult){
if (bindingResult.hasErrors()){
return bindingResult.getFieldError().getDefaultMessage();
}
userService.createUser(userInfo.getTel(),userInfo.getPassWord());
return "OK";
}
标注@Valid注解的javabean中的属性可以使用@notNull(message=“xxxxxx”)
关于spring中的BeanUtils.copyProperties(source,target)方法
BeanUtils.copyProperties(preCreateReq,preCreateOrderReqAPI);
将source中和target相同的属性赋值给target,可以简化代码中的getter和setter方法。