在开发的时候往往表中的有些字段值是固定的,例如:性别只能选择男或女,此时我们可以使用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("[email protected]");
//设置性别信息为枚举项,会将@EnumValue注解所标识的属性值存储到数据库
user.setSex(SexEnum.FEMALE);
//插入数据
userMapper.insert(user);
}
}
执行后查看数据库: