表中的有些字段值是固定的,例如性别(男或女),此时可以使用MyBatis-Plus的通用枚举来实现
a>数据库表添加sex字段
id主键自增
b>创建通用枚举类型
路径为src/main/java/com/mybatisplus_demo/enums/SexEnum.java
@Getter
@AllArgsConstructor
public enum SexEnum {
MALE(1, "男"),
FEMALE(2, "女");
@EnumValue // 将注解所标识的属性的值存储到数据库中
private Integer sex;
private String sexName;
}
只需要提供属性的get方法即可,但是不能提供set方法,而且也不允许提供set方法,因为枚举类是不可变的常量类,不能被修改
c>修改实体类
修改User
类,新增枚举成员sex
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
private Long id;
private String name;
private Integer age;
private String email;
private SexEnum sex;
@TableLogic
private Integer isDeleted;
}
d>配置扫描通用枚举
在application.yml
中添加
mybatis-plus:
configuration:
# 配置MyBatis-Plus的日志
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
# 配置MyBatis-Plus的全局配置
global-config:
db-config:
# 配置MyBatis-Plus操作表的默认前缀
table-prefix: t_
# 配置MyBatis-Plus的主键策略
id-type: auto
# 配置类型别名所对应的包
type-aliases-package: com.mybatisplus_demo.pojo
# 配置扫描通用枚举
type-enums-package: com.mybatisplus_demo.enums
e>添加测试类
本节测试,全部采用Mapper CURD
;创建测试类,路径为src/test/java/com/mybatisplus_demo/MyBatisPlusEnumTest.java
@SpringBootTest
@RunWith(SpringRunner.class)
public class MyBatisPlusEnumTest {
@Autowired(required = false)
private UserMapper userMapper;
@Test
public void tesSexEnum(){
//设置性别信息为枚举项,会将@EnumValue注解所标识的属性值存储到数据库
int i = userMapper.insert(new User(null, "张三", 20, "1000@gmail.com", SexEnum.MALE, 0));
System.out.println(i);
}
}