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

@Valid和@NotNull字段校验使用

@Valid和@NotNull字段校验使用

pom

网上讲了一堆,还是用spring-boot-starter-validation最好,用1踩坑了

<!--        <dependency>-->
<!--            <groupId>org.hibernate.validator</groupId>-->
<!--            <artifactId>hibernate-validator</artifactId>-->
<!--            <version>7.0.1.Final</version>-->
<!--        </dependency>--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId></dependency>

自定义异常通用处理类

为了捕获@Valid和@NotNull校验后抛出的异常

/*** 异常通用处理**/
@Slf4j
@ResponseBody
@ControllerAdvice
public class DefaultExceptionAdvice {//处理Get请求中 使用@Valid 验证路径中请求实体校验失败后抛出的异常@ExceptionHandler(BindException.class)public Result BindExceptionHandler(BindException e) {String message = e.getBindingResult().getFieldError().getDefaultMessage();return Result.failed(333, message);}//处理请求参数格式错误 @RequestBody上validate失败后抛出的异常是MethodArgumentNotValidException异常。@ExceptionHandler(MethodArgumentNotValidException.class)private Result<String> handleMethodArgumentNotValidException(MethodArgumentNotValidException e){log.error(e.getMessage(), e);String message = e.getBindingResult().getFieldError().getDefaultMessage();return Result.failed(333, message);}
}

Result.failed换成你自己的统一处理类

@Valid

 @PostMapping("/telecomMicroPay")public Result<HMQMicroPayRspBean> telecomMicroPay(@Valid @RequestBody HMQMicroPayReqBean hmqMicroPayReqBean) throws IOException, CustomException {log.info("api-channel/telecomHMQController/telecomMicroPay : HMQMicroPayReqBean{}", hmqMicroPayReqBean);HMQMicroPayRspBean hmqMicroPayRspBean = telecomTrxService.telecomMicroPay(hmqMicroPayReqBean);return Result.succeed(hmqMicroPayRspBean);}

@NotNull

@Data
@NoArgsConstructor
public class HMQMicroPayReqBean extends HMQBaseApi {@NotNull(message = "支付金额不能为空")private int totalAmount ;//支付金额,单位:分,该支付金额是实际金额。@NotNull(message = "商户订单号不能为空")private String outTradeNo = "10403103436W2WVVVVV11012226";//商户订单号,订单号必须唯一,长度 8-32 位@NotNull(message = "用户授权码不能为空")private String authCode = "135565156048122643"; //用户授权码//非必填private String payType;//0:微信1:支付宝3:翼支付5: 银联二维码 如果不传即自动识别private String openid;//好码齐系统中的 openid}

相关文章:

  • 编程笔记 html5cssjs 044 CSS显示
  • ssh: connect to host github.com port 22: Connection refused
  • PGSQL主键序列
  • Hypervisor 和Docker 还有Qemu有什么区别与联系?
  • 鸿蒙开发案列一
  • 基本的 Socket 模型
  • 反序列化字符串逃逸(上篇)
  • 【.NET Core】深入理解异步编程模型(APM)
  • python基础 - 变量
  • 78.网游逆向分析与插件开发-背包的获取-背包类的C++还原与获取物品名称
  • Python基础之文件操作(I/O)
  • html 3D 倒计时爆炸特效
  • mac os电脑用n切换node版本
  • 【ARM 嵌入式 C 入门及渐进7 -- C代码中的可变参数宏详细介绍】
  • 【0247】PG内核checkpoint实现机制分析(2)
  • in typeof instanceof ===这些运算符有什么作用
  • input实现文字超出省略号功能
  • Object.assign方法不能实现深复制
  • Quartz实现数据同步 | 从0开始构建SpringCloud微服务(3)
  • Spring核心 Bean的高级装配
  • 从PHP迁移至Golang - 基础篇
  • 简单易用的leetcode开发测试工具(npm)
  • 一个普通的 5 年iOS开发者的自我总结,以及5年开发经历和感想!
  • 仓管云——企业云erp功能有哪些?
  • 专访Pony.ai 楼天城:自动驾驶已经走过了“从0到1”,“规模”是行业的分水岭| 自动驾驶这十年 ...
  • ​Linux Ubuntu环境下使用docker构建spark运行环境(超级详细)
  • #Linux杂记--将Python3的源码编译为.so文件方法与Linux环境下的交叉编译方法
  • (2022 CVPR) Unbiased Teacher v2
  • (33)STM32——485实验笔记
  • (9)YOLO-Pose:使用对象关键点相似性损失增强多人姿态估计的增强版YOLO
  • (Bean工厂的后处理器入门)学习Spring的第七天
  • (Mirage系列之二)VMware Horizon Mirage的经典用户用例及真实案例分析
  • (Redis使用系列) Springboot 实现Redis 同数据源动态切换db 八
  • (TipsTricks)用客户端模板精简JavaScript代码
  • (九十四)函数和二维数组
  • (十二)springboot实战——SSE服务推送事件案例实现
  • (转)jQuery 基础
  • ./configure、make、make install 命令
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地定义和使用弱事件
  • .net访问oracle数据库性能问题
  • /proc/vmstat 详解
  • @Autowired和@Resource的区别
  • @EnableWebMvc介绍和使用详细demo
  • @Import注解详解
  • [].shift.call( arguments ) 和 [].slice.call( arguments )
  • [c]扫雷
  • [C语言]一维数组二维数组的大小
  • [DAX] MAX函数 | MAXX函数
  • [ERROR] 不再支持目标选项 5。请使用 7 或更高版本
  • [javaSE] GUI(Action事件)
  • [linux]centos7下解决yum install mysql-server没有可用包
  • [Linux版本Debian系统]安装cuda 和对应的cudnn以cuda 12.0为例
  • [Machine Learning] 领域适应和迁移学习
  • [Tyvj1462]凸多边形
  • [UVALive 3716] DNA Regions