关于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
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值