SpringBoot和MyBatisPlus中枚举自动转换

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.2.0</version>
</dependency>

yml配置

mybatis-plus:
  #扫描,多个package用逗号或者分号分隔
  typeEnumsPackage: io.renren.modules.*.enums

使用方法

  1. 使用枚举@EnumValue

    @Getter
    public enum  UserType{
    
        BACKEND(1, "后台"),
        FRONT(2, "前台"),
    
        ;
    
        @JsonCreator
        UserType(Integer val, String desc) {
            this.val = val;
            this.desc = desc;
        }
    
        @EnumValue
        private final Integer val;
        @JsonValue
        private final String desc;
    
    }
    

  2. 实现接口IEnum<T>

    @Getter
    public enum  UserType implements IEnum<Integer> {
    
        BACKEND(1, "后台"),
        FRONT(2, "前台"),
    
        ;
    
        @JsonCreator
        UserType(Integer val, String desc) {
            this.val = val;
            this.desc = desc;
        }
    
        private final Integer val;
        @JsonValue
        private final String desc;
    
           @Override
       public Integer getValue() {
           return val;
       }
    }
    

三、可能存在的问题

如果数据库中使用的tinyint(1)那么在mybatis将会映射为boolean,使用Integer作为枚举类的值会映射失败,一值为Null,解决方法是使用tinyint(4),因为tinyint(1)tinyint(4)占用的空间是一样,故没有影响。

查考文章:https://my.oschina.net/u/3773384/blog/1802992