update docs

This commit is contained in:
开源海哥 2023-04-17 12:01:44 +08:00
parent e32cbadfbb
commit d5342f3792
3 changed files with 56 additions and 2 deletions

View File

@ -63,6 +63,7 @@ export default defineConfig({
{text: '字段权限', link: '/zh/columns-permission'},
{text: '字段加密', link: '/zh/columns-encrypt'},
{text: '字典回显', link: '/zh/columns-dict'},
{text: '枚举属性', link: '/zh/enum-property'},
{text: '多租户', link: '/zh/multi-tenancy'},
]
},

44
docs/zh/enum-property.md Normal file
View File

@ -0,0 +1,44 @@
# 枚举属性
在某些场景下,我们希望在 Entity 中定义的属性是某一个枚举类,而非基本的数据类型,例如:
```java 7
@Table(value = "tb_account")
public class Account{
@Id(keyType = KeyType.Auto)
private Long id;
private TypeEnum typeEnum;
}
```
在默认情况下Mybatis 内置了一个名为:`EnumTypeHandler` 的处理器,用于处理这种场景。通过 `EnumTypeHandler` 处理后,数据库保存的是 `TypeEnum` 对应的属性名称,
是一个 String 类型。例如 `TypeEnum.TYPE1` 保存到数据库的内容为 `TYPE1` 这个字符串。
## @EnumValue 注解
但很多时候,我们希望保存到数据库的,是 `TypeEnum` 枚举的某个属性值,而非 `TYPE1` 字符串,那么,我就需要用到 Mybatis-Flex 提供的注解 `@EnumValue`,以下是示例代码:
```java 8,9
public enum TypeEnum {
TYPE1(1, "类型1"),
TYPE2(2, "类型2"),
TYPE3(3, "类型3"),
;
@EnumValue
private int code;
private String desc;
TypeEnum(int code, String desc) {
this.code = code;
this.desc = desc;
}
}
```
通过注解 `@EnumValue``code` 属性标注后,当我们保存 Account 内容到数据库时Mybatis-Flex 会自动使用 `code` 属性值进行保存同时在读取数据库内容的时候Mybatis-Flex 自动把数据库的值转换为
`TypeEnum` 枚举。

View File

@ -1,12 +1,21 @@
package com.mybatisflex.test;
import com.mybatisflex.annotation.EnumValue;
public enum TypeEnum {
AGE(0);
TYPE1(1,"类型1"),
TYPE2(2,"类型2"),
TYPE3(3,"类型3"),
;
@EnumValue
private int code;
TypeEnum(int code) {
private String desc;
TypeEnum(int code, String desc) {
this.code = code;
this.desc = desc;
}
}