@Validated和Valid用法

1. 关于 @Validated 与Valid使用

一般加在类上,也可以加在方法上,或者方法里面,
如下面案列

@RestController
@RequestMapping("/receive")
@Validated
public class ReceiveController {



    /**
     * 分页查询
     *
     * @param request 查询参数
     * @return 收款列表
     */
    @GetMapping("/page")
    public PageInfo<PageReceiveVO> listByPage(@Valid ReceivePageRequest request) {
        request.setOperatorEnterpriseId(HeaderHelper.getEnterpriseId());
        request.setTenantId(HeaderHelper.getTenantId());
        return receiveService.listByPage(request);
    }

    /**
     * 新增
     *
     * @param receiveDTO 入参
     */
    @PostMapping("/save")
    public void save(@RequestBody @Valid ReceiveDTO receiveDTO) {
        receiveDTO.setTenantId(HeaderHelper.getTenantId());
        receiveDTO.setOperator(HeaderHelper.getCustomerId());
        receiveDTO.setOperatorName(HeaderHelper.getUserName());
        receiveDTO.setPayeeId(HeaderHelper.getCustomerId());
        receiveDTO.setPayeeName(HeaderHelper.getUserName());
        receiveDTO.setOperatorEnterpriseId(HeaderHelper.getEnterpriseId());
        if (receiveDTO.getId() == null) {
            receiveService.saveReceive(receiveDTO);
        } else {
            receiveService.updateReceive(receiveDTO);
        }
    }

    /**
     * 根据收款Id查询详情
     *
     * @param id 收款Id
     * @return ReceiveDetailVO 收款详情
     */
    @GetMapping("/detail")
    public ReceiveDetailVO detail(@NotNull(message = "收款Id不能为空") Long id) {
        return receiveService.detail(id);
    }

    /**
     * 认领操作
     *
     * @param claims 认领
     */
    @PostMapping("/claim")
    public void claim(@RequestBody @Valid @Size(min = 1, message = "认领记录最少需要一条") List<ClaimDTO> claims) {
        BaseParameter request = new BaseParameter();
        request.setTenantId(HeaderHelper.getTenantId());
        request.setOperator(HeaderHelper.getCustomerId());
        request.setOperatorName(HeaderHelper.getUserName());
        request.setOperatorEnterpriseId(HeaderHelper.getEnterpriseId());
        receiveService.claim(claims, request);
    }

如上面的案列所示:

  1. Controller类上加@Validated 表示对该整个类进行校验
    在这里插入图片描述

  2. 入参不是对象,则直接使用校验注解即可,切记不要将@RequestParam与校验注解一起使用,会默认走@RequestParam注解,校验注解会失效
    在这里插入图片描述
    下面这种,就是会导致校验注解失效
    在这里插入图片描述

  3. 入参是对象,且对象里面的属性也需要校验,以下两种都行
    在这里插入图片描述
    在这里插入图片描述

  4. 入参是集合,只能使用@Valid,而不能使用Validated
    在这里插入图片描述

  5. 对象里面还有集合,需要加 @Valid注解
    在这里插入图片描述

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Alan0517

感谢您的鼓励与支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值