关于spring boot枚举类型的传参接收与比较

在实体类中定义的字段类型是枚举类型:

@Data
public class ProductDTO implements Serializable {
    private static final long serialVersionUID = 902365284986113117L;

    /**商品id*/
    @NotNull(message = "商品id不能为空",groups = {Add.class})
    private Integer productId;

    /**商品价格*/
    @NotNull(message = "商品价格不能为空",groups = {Add.class})
    private BigDecimal productPrice;

    /**用户id*/
    @NotNull(message = "用户id不能为空",groups = {Add.class})
    private Integer userId;

    /**商品状态  枚举类型*/
    private ProductEnum productStatus;

    /**新增操作校验*/
    public interface Add{}
}

定义一个枚举类:

@Getter
@AllArgsConstructor
public enum ProductEnum {
    /**
     * 上架
     */
    UP("上架"),
    /**
     * 下架
     */
    DOWN("下架");
    private final String productStatus;
}

controller:

@RequestMapping("/selectPaging")
    public Page<ProductAndUserVO> selectPaging(@Validated(UserProductDTO.QueryList.class) UserProductDTO dto, BindingResult bindingResult)throws Exception{
        if (bindingResult.hasErrors()){
            throw new ErrorCodeException(ErrorCodeEnum.NO,bindingResult.getAllErrors().get(0).getDefaultMessage());
        }
        return selectProductService.list(dto);
    }

postman测试:
在这里插入图片描述

要用大写的,因为枚举类中是大写的

不然报错:

Failed to convert property value of type 'java.lang.String' to required type 'com.decent.enums.ProductEnum' for property 'productStatus'; nested exception is org.springframework.core.convert.ConversionFailedException: Failed to convert from type [java.lang.String] to type [com.decent.enums.ProductEnum] for value 'up'; nested exception is java.lang.IllegalArgumentException: No enum constant com.decent.enums.ProductEnum.up

比较

 Product product = productMapper.selectProductStatus(pDto);
        // 商品上架状态
ProductEnum.UP.equals(实体类中获取到的值)

如果和自定义的字符串比较则永远为false

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot提供了一个内置的验证框架,可以在请求处理的过程中,对通过GET请求传递的参数进行验证。使用Spring Boot Validation可以轻松地实现对请求参数的校验。 首先,我们需要在请求参数的对应字段上使用相关的验证注解。例如,如果我们想要校验一个字符串参数的长度是否在一定范围内,可以在该参数字段上加上@Size(min=1, max=10)注解。这样,在接收到GET请求并映射到对应的处理方法时,Spring Boot就会自动进行参数校验。 接着,我们需要在处理请求的方法上加上@Validated注解,以启用参数校验功能。在处理方法的入参中,可以使用@Valid注解对需要校验的参数对象进行注解。当请求到来时,Spring Boot会自动进行参数检验,并在检验不通过时,返回相应的错误信息。 例如,我们有一个GET请求处理方法,接收一个名为"name"的字符串参数: @GetMapping("/api/user") public String getUser(@RequestParam(name = "name") @Size(min=1, max=10, message="名称长度必须在1到10之间") String name) { return "Hello " + name; } 在这个方法上,我们使用了@Validated注解,并在name参数上加上了@Size注解。当接收到GET请求时,Spring Boot会自动校验name参数的长度是否在1到10之间,如果不满足条件,会返回指定的错误信息。 总结起来,Spring Boot Validation可以方便地对通过GET请求传递的参数进行校验。我们只需要在请求参数对应的字段上加上相应的验证注解,然后在处理方法上加上@Validated注解并在需要校验的参数上加上@Valid注解即可。这样,当有GET请求到来时,Spring Boot会自动校验参数,并返回错误信息给客户端。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值