您当前的位置: 首页 >  spring

Optional在SpringBoot中的实际应用

梁云亮 发布时间:2021-08-17 06:40:30 ,浏览量:3

第一步:实体类
@Data
@ToString
public class User {
    private Integer id;

    @NotBlank(message = "用户名不能为空")
    @Length(min = 6, max = 32, message = "用户名的长度需要在6~32之间")
    private String name;

    @Past(message = "出生日期必须早于当前日期")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate birth;

    @Email(
            regexp = "^[a-zA-Z0-9_.-]+@[a-zA-Z0-9-]+(\\.[a-zA-Z0-9-]+)*\\.[a-zA-Z0-9]{2,6}$",
            message = "邮件格式错误")
    private String email;

    @Size(min = 11, max = 11, message = "用户电话长度必须为11位")
    private String mobile;

    @NotNull(message = "用户等级不能为空")
    @Min(value = 1, message = "用户等级最小值为1")
    @Max(value = 6, message = "用户等级最大值为6")
    @Digits(integer = 1, fraction = 0, message = "用户等级必须为整数")
    private Integer level;

}
第二步:定义BaseController
public class BaseController {
    protected Optional valid(BindingResult result){
        if(result.hasErrors()){
            List list = result.getAllErrors().stream()
            	.map(error -> error.getDefaultMessage())
            	.collect(Collectors.toList());
            return Optional.ofNullable(list);
        }
        return  Optional.empty();
    }
}
第三步:定义控制器
@RestController
@RequestMapping("/user1")
public class UserController extends BaseController{

    @PostMapping("/add")
    public void add(@Valid User user, BindingResult result) {
        Optional op = valid(result);
        if(op.isPresent()){
            op.get().forEach(System.out::println);
        }
    }

}
第四步:测试

在这里插入图片描述 在这里插入图片描述

关注
打赏
1688896170
查看更多评论

梁云亮

暂无认证

  • 3浏览

    0关注

    1176博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.0780s