mybatis-plus通用枚举

1 前言

        一般在我们的数据库中,表示性别等类型的字段通常用int类型来表示,那么当我们声明了一个枚举类时,如何将枚举类的某一属性赋值到数据库呢?

 2 测试

定义一个枚举类:

@Getter
public enum SexEnum {
    MALE(1, "男"),
    FEMALE(2, "女");

   
    private Integer sex;
    private String sexName;

    SexEnum(Integer sex, String sexName) {
        this.sex = sex;
        this.sexName = sexName;
    }
}

实体类字段:

@Data
//@TableName("t_user")
public class User {

    //将属性所对应的字段指定为主键
    //@TableId注解的value属性用于指定主键的字段
    //@TableId注解的type属性设置主键生成策略
//    @TableId(value = "uid", type = IdType.AUTO)
    @TableId(value = "uid")
    private Long id;

    //指定属性所对应的字段名
    @TableField("user_name")
    private String name;

    private Integer age;

    private String email;

    private SexEnum sex;

    @TableLogic
    private Integer isDeleted;

}

测试类:

    @Test
    public void test(){
        User user = new User();
        user.setName("admin");
        user.setAge(33);
        user.setSex(SexEnum.MALE);
        int result = userMapper.insert(user);
        System.out.println("result:"+result);
    }

控制台输出:

原因是 

数据库定义字段是int类型,但是插入的却不是int类型所以报错。

那么如何解决这个问题呢?只需两步

1)首先可以改变枚举类(将想要插入的值加上@EnumValue注解):

@Getter
public enum SexEnum {
    MALE(1, "男"),
    FEMALE(2, "女");

    @EnumValue //将注解所标识的属性的值存储到数据库中
    private Integer sex;
    private String sexName;

    SexEnum(Integer sex, String sexName) {
        this.sex = sex;
        this.sexName = sexName;
    }
}

2) 然后在配置文件中加上扫描通用枚举类的包

 再次进行测试发现插入成功

posted @ 2022-08-03 10:42  小猪不会叫  阅读(61)  评论(0)    收藏  举报  来源