SpringBoot MyBatis Plus框架枚举类型转换到mysql类型报错,仅支持MySQL**的类型默认转换问题

问题

问题的原因就是,我定义一个两个参数的枚举类型,用于区分素材的类型:

public enum ResType {
    IMAGE(0,"图片"),
    VIDEO(1,"视频"),
    UNKNOWN(2,"未知");

    private int value;
    private String des;

    ResType(int value, String des) {
        this.value = value;
        this.des = des;
    }
    public int getValue() {
        return value;
    }
    public String getDes() {
        return des;
    }
}

项目采用Springboot + mybatis-plus框架来实现,有这个资源的实体类entity(Resource):

@Data
@EqualsAndHashCode(callSuper = false)
@TableName(value = "resource")
@TableComment("素材数据")
@ApiModel(value = "素材数据")
public class Resource {
    @ApiModelProperty(value = "素材名称")
    @Column(comment = "素材名称", length = 50)
    private String name;

    @ApiModelProperty(value = "素材类型")
    @Column(comment = "素材类型")
    private ResType resType;

    @ApiModelProperty(value = "素材地址")
    @Column(comment = "素材地址", length = 200)
    private String url;
}

按理说运行工程后,新增的实体类会根据注解内容进行构建数据库的表,不过在构建表的时候就报错了。

报错内容如下:
在这里插入图片描述

表:resource,初始化字段结构失败! 字段名:resType不支持class
com.***.enums.ResType类型转换到mysql类型,仅支持JavaToMysqlType类中的类型默认转换,异常抛出!

也就是说这里的ResType类型的枚举是没法作为表内字段的转换类型。

解决办法

修改Resource数据实体的Column使其指定为MySqlTypeConstant的类型,这里可以INT也可以TEXT

@ApiModelProperty(value = "素材类型")
@Column(type = MySqlTypeConstant.INT, comment = "素材类型")
private ResType resType;

这样会将ResType 的value值转换成自已定义的type(这里是MySqlTypeConstant.TEXT)存入数据库内。
在这里插入图片描述

因为这里枚举只需要简单处理,看到有更灵活的方式就是自定义的枚举处理转换器。后续研究一下再实现吧。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

十幺卜入

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值