当前位置: 首页 > news >正文

@Validation 的使用 Spring

校验,任何程序都需要的基础动作。

import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Pattern;
import jakarta.validation.groups.Default;

Validation 注解提供了 Spring Boot 丰富的校验使用。

参数校验

@RestController
@RequestMapping("/user")
@Validated
@Slf4j
public class UserController {@Autowiredprivate UserService userService;/*** 注册用户* @param username* @param password* @return*/@PostMapping("/register")public Result register(@Pattern(regexp = "^\\S{5,16}$") String username,@Pattern(regexp = "^\\S{5,16}$") String password) {// 确定用户是否存在User user = userService.findByUsername(username);if (user != null) {return Result.error(ErrorMessage.REGISTER_ERROR);}else {String md5PW = Md5Util.getMD5String(password);     // 对 password 进行 md5 加密userService.register(username,md5PW);return Result.success();}}

实体类校验

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Category {@NotNullprivate Integer id;//主键ID@NotEmpty@Pattern(regexp = "^\\S{3,10}$")private String categoryName;//分类名称@NotEmpty@Pattern(regexp = "^\\S{3,10}$")private String categoryAlias;//分类别名private Integer createUser;//创建人ID@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")private LocalDateTime createTime;//创建时间@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")private LocalDateTime updateTime;//更新时间
}

分组校验

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Category {@NotNull(groups = Update.class)private Integer id;//主键ID@NotEmpty@Pattern(regexp = "^\\S{3,10}$")private String categoryName;//分类名称
//    @NotEmpty(groups = {Add.class,Update.class})@NotEmpty@Pattern(regexp = "^\\S{3,10}$")private String categoryAlias;//分类别名private Integer createUser;//创建人ID@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")private LocalDateTime createTime;//创建时间@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")private LocalDateTime updateTime;//更新时间// 定义 groups 分组public interface Add extends Default {}public interface Update extends Default {}
}

说明:

1. 如果不设置分组校验,则默认为 Default 分组

2. 分组校验,有继承能力,即 A extends B

所以代码

//    @NotEmpty(groups = {Add.class,Update.class})
    @NotEmpty

实体类校验,需要方法上

    /*** 新增分类* @param category* @return*/@PostMappingpublic Result add(@RequestBody @Validated(Category.Add.class) Category category) {log.info("新增分类:{}", category);categoryService.add(category);return  Result.success();}

和 

    /*** 更新文章分类* @param category* @return*/@PutMappingpublic Result update(@RequestBody @Validated(Category.Update.class) Category category) {log.info("分类详情 {}", category);categoryService.update(category);return Result.success();}


文章转载自:

http://2MJtVISa.Lzjxn.cn
http://wZZiYRJe.Lzjxn.cn
http://nSBlvpSw.Lzjxn.cn
http://9Yiwyp3l.Lzjxn.cn
http://8yWejqYH.Lzjxn.cn
http://W2FCUvp7.Lzjxn.cn
http://GMBT73FS.Lzjxn.cn
http://TOOtI6MM.Lzjxn.cn
http://dBMVHCHd.Lzjxn.cn
http://XpwGcaBK.Lzjxn.cn
http://pPrcYrvR.Lzjxn.cn
http://4Qwcgp7C.Lzjxn.cn
http://lUN0xBap.Lzjxn.cn
http://rgoiJrK9.Lzjxn.cn
http://GFtiFQ13.Lzjxn.cn
http://vpkV4Gr3.Lzjxn.cn
http://EalY6rlb.Lzjxn.cn
http://GHkp2Eo9.Lzjxn.cn
http://wJ7PoKYD.Lzjxn.cn
http://4hCceph9.Lzjxn.cn
http://b9Q8KDW5.Lzjxn.cn
http://DW7Kq1PG.Lzjxn.cn
http://YtrXXx10.Lzjxn.cn
http://8SC7wkPk.Lzjxn.cn
http://wPVpxOUQ.Lzjxn.cn
http://XLF0Owix.Lzjxn.cn
http://TRLzc5dt.Lzjxn.cn
http://HhzYN6M9.Lzjxn.cn
http://0IR0GMVb.Lzjxn.cn
http://oNF3z1nW.Lzjxn.cn
http://www.dtcms.com/a/245478.html

相关文章:

  • LeetCode--29.两数相除
  • 【慧游鲁博】【13】后端 · 文物图片识别功能完善 · 个性化文物介绍
  • 火线、零线、地线 基础知识
  • Actix-web 中的权限中间件实现
  • 智慧养老与数字健康:科技赋能老年生活,构建全方位养老体系
  • 高防IP是怎么防御的?高防IP的防御步骤又有哪些?
  • 发布5大AI课程体系,传智教育破局AI开发人才荒
  • GitHub 趋势日报 (2025年06月11日)
  • 在MATLAB命令行执行ros2node 和 ros2subscriber后,执行ros2 topic list,MATLAB卡死
  • preload、preconnect、prefetch 的作用
  • 【Java多线程从青铜到王者】阻塞队列(十)
  • bash挖矿木马事件全景复盘与企业级防御实战20250612
  • MySQL中InnoDB存储引擎底层原理与MySQL日志机制深入解析
  • HTTP 网络协议演进过程
  • centos clamav 扫描及告警配置
  • OpenCV——图像基本操作(三)
  • 数据库专家 OCP 认证培训:开启职业黄金赛道
  • 基于Springboot+UniApp+Ai实现模拟面试小工具一:系统需求分析及设计
  • TDengine 基础功能——数据写入
  • SpringCloud-seata集成到nacos
  • 6.12 操作系统面试题 进程管理
  • JDBC接口开发指南
  • 泛型的PECS原则
  • Docker 安装 Oracle 12C
  • React中修改 state 时必须返回一个新对象 (immutable update)
  • 基于数据库实现配置管理和定时任务启停
  • 常见Modbus协议面试问题
  • 强化微调技术与GRPO算法(1):简介
  • 农田实时监测与管理系统开发
  • map()函数