在实体类中定义的字段类型是枚举类型:
@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(实体类中获取到的值)