# MyBatis-Plus教程 - 11 映射枚举
在 Java 中是有枚举类型的,我们经常使用枚举类型来定义只有一些固定的值的变量。但是数据库中是没有枚举类型的,那么如何将 Java 中的枚举类型的属性与数据库中的字段进行映射呢?下面看一下。
# 11.1 实现映射枚举
# 1 修改数据库表
首先在数据库表中添加性别字段,待会用这个字段与 Java中枚举类型进行映射。
使用数字来表示各种性别: 0:未知
、1:男
、2:女
。
ALTER TABLE tb_user
ADD COLUMN gender TINYINT(1) DEFAULT 0;
1
2
2
# 2 定义枚举类型
定义一个枚举类,定义性别为三种 未知
、男
、女
。
需要在保存到数据库的属性上添加 @EnumValue
注解。
package com.foooor.helloplus.constant;
import com.baomidou.mybatisplus.annotation.EnumValue;
public enum Gender {
UNKNOWN(0, "未知"), // 未知
MALE(1, "男"), // 男
FEMALE(2, "女"); // 女
@EnumValue
private Integer code; // 对应0, 1, 2
private String name; // 对应"未知", "男", "女"
Gender(Integer code, String name) {
this.code = code;
this.name = name;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
上面的配置,在保存的时候,是将 code
属性值保存到数据库 gender
字段。
# 3 修改pojo
在 User.java 类中添加性别属性:
@Data
@TableName("tb_user")
public class User {
private Long id;
private String username;
private String password;
private Gender gender; //性别
private Integer age;
private String email;
private Date createTime;
private Date updateTime;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
# 4 测试
编写测试方法进行测试:
User user = new User();
user.setUsername("foooor");
user.setEmail("foooor@foooor.com");
user.setPassword("123456");
user.setGender(Gender.MALE); // 设置性别
user.setAge(13);
Date currentDate = new Date();
user.setCreateTime(currentDate);
user.setUpdateTime(currentDate);
int result = userMapper.insert(user);
log.info("插入用户结果:{}", result);
log.info("插入用户:{}", user.getId());
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
执行结果,将 性别男
对应的 1
插入到数据库:
查询的时候,会自动将数据库的值封装为枚举类型。