一、简介
数据库表中的有些字段值是固定的,例如性别(男或女),此时我们可以使用 MyBatis-Plus 的通用枚举来实现。
二、案例演示
2.1 添加字段
在数据库表中添加一个 sex 字段,如下图:
2.2 创建枚举
创建一个表示性别的枚举类,代码如下所示:
package com.mybatisplus.enums;
import com.baomidou.mybatisplus.annotation.EnumValue;
import lombok.Getter;
@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.3 修改实体类
在实体类中,需要使用枚举类来修饰对应的枚举字段,如下:
@Data
public class User {
@TableId(value = "uid",type = IdType.AUTO)
private Long id;
@TableField("username")
private String name;
private Integer age;
// 类型需要使用枚举类来修饰
private SexEnum sex;
private String email;
@TableLogic
private Integer isDeleted;
}
2.4 配置扫描枚举
在 application.yml 中配置扫描通用枚举的路径,如下:
# 配置MyBatis日志
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
global-config:
db-config:
# 配置MyBatis-Plus操作表的默认前缀
table-prefix: t_
# 配置MyBatis-Plus的主键策略
id-type: auto
# 设置类型别名
type-aliases-package: com/mybatisplus/entity
# 配置扫描通用枚举
type-enums-package: com.mybatisplus.enums
2.4 测试
测试代码如下:
@Test
public void testSexEnum(){
User user = new User();
user.setName("Enum");
user.setAge(20);
user.setIsDeleted(0);
// 设置性别信息为枚举项,会将 @EnumValue 注解所标识的属性值存储到数据库
user.setSex(SexEnum.MALE);
//INSERT INTO t_user ( username, age, sex ) VALUES ( ?, ?, ? )
userMapper.insert(user);
}