实体类枚举
wenking 12/13/2023
在mysql中,我们通常会用int字段来表示枚举,映射到java实体类的时候为Integer。如果我们在企业开发中大量使用 1,2..来设置实体类,将非常不利于维护,因此mybatis提供了枚举注解简化开发。
# sql脚本
create table t_order_return_reason
(
id int auto_increment primary key,
name varchar(128) null comment '退货原因',
sort int null comment '排序',
publish int null comment '发布状态',
create_time datetime null comment '创建时间'
);
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 定义枚举类
@Getter
@AllArgsConstructor
public enum PublishEnum {
NON_PUBLISH(0, "未发布"),
CANCEL_PUBLISH(1, "取消发布"),
PUBLISH(2, "发布");
@EnumValue
private final int value;
private final String message;
}
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
@EnumValue
注解指定了枚举类映射为mysql列表值
# 定义实体类
@TableName(value ="t_order_return_reason")
@Data
public class OrderReturnReason implements Serializable {
/**
*
*/
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
/**
* 退货原因
*/
@TableField(value = "name")
private String name;
/**
* 排序
*/
@TableField(value = "sort")
private Integer sort;
/**
* 发布状态
*/
@TableField(value = "publish")
private PublishEnum publish;
/**
* 创建时间
*/
@TableField(value = "create_time")
private LocalDateTime createTime;
@TableField(exist = false)
private static final long serialVersionUID = 1L;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36