通用枚举

在开发的时候往往表中的有些字段值是固定的,例如:性别只能选择男或女,此时我们可以使用MyBatis-Plus的通用枚举来实现

一、给之前的user表添加sex字段

 需要注意的是,在sex字段指定性别的时候,实际在数据库存储的时候,选择是0或者1用于代替男和女

二、创建通用枚举类型

在com.augus.enums包下创建枚举类:SexEnum 内容如下:

package com.augus.enums;

import com.baomidou.mybatisplus.annotation.EnumValue;


public enum SexEnum {
    MALE(0,"男"),
    FEMALE(1,"女");


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

    @EnumValue //标记数据库存的值是sex
    private final Integer sex;

    private final String sexName;

}

三、设置实体类中对应字段为枚举类

上述案例中实体类sex字段,最终传入的是枚举类中的值,所以需要指定sex字段的类型为 SexEnum 这个实体类

package com.augus.pojo;

import com.augus.enums.SexEnum;
import com.baomidou.mybatisplus.annotation.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;

@AllArgsConstructor
@NoArgsConstructor
@Data
public class User implements Serializable {
    //指定id对应的表中主键字段为uid,主键策略为自增
    //@TableId(value = "uid", type = IdType.AUTO)
    @TableId(value = "uid")
    private Long id;
    @TableField(value = "user_name")
    private String name;
    private Integer age;
    //这里指定数据为原生的枚举类
    private SexEnum sex;
    private String email;
    @TableLogic
    private Integer is_delete;
}

四、创建测试类进行测试

创建测试类:MyBatisPlusEnum 内如如下:

package com.augus;

import com.augus.enums.SexEnum;
import com.augus.mapper.UserMapper;
import com.augus.pojo.User;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
public class MyBatisPlusEnum {
    @Autowired
    private UserMapper userMapper;

    @Test
    public void testSexEnum(){
        User user = new User();
        //设置信息
        user.setName("莉莉娅");
        user.setAge(31);
        user.setEmail("liliya@126.com");
        //设置性别信息为枚举项,会将@EnumValue注解所标识的属性值存储到数据库
        user.setSex(SexEnum.FEMALE);
        //插入数据
        userMapper.insert(user);
    }
}

执行后查看数据库:

posted @ 2022-12-03 11:42  酒剑仙*  阅读(93)  评论(0)    收藏  举报