Skip to content

Commit 639e6dd

Browse files
authored
Update auto-fill-metainfo.md
1 parent 37e5006 commit 639e6dd

File tree

1 file changed

+69
-1
lines changed

1 file changed

+69
-1
lines changed

guide/auto-fill-metainfo.md

Lines changed: 69 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,69 @@
1-
# 自动填充功能
1+
# 自动填充功能
2+
3+
示例工程:
4+
5+
👉 [mybatis-plus-sample-auto-fill-metainfo](https://gitee.com/baomidou/mybatis-plus-samples/tree/master/mybatis-plus-sample-auto-fill-metainfo)
6+
7+
8+
- 实现元对象处理器接口:com.baomidou.mybatisplus.core.handlers.MetaObjectHandler
9+
10+
- 注解填充字段 `@TableField(.. fill = FieldFill.INSERT)` 生成器策略部分也可以配置!
11+
12+
```java
13+
public class User {
14+
15+
// 注意!这里需要标记为填充字段
16+
@TableField(.. fill = FieldFill.INSERT)
17+
private String fillField;
18+
19+
....
20+
}
21+
```
22+
23+
24+
- 自定义实现类 MyMetaObjectHandler
25+
26+
```java
27+
@Component
28+
public class MyMetaObjectHandler implements MetaObjectHandler {
29+
30+
private static final Logger LOGGER = LoggerFactory.getLogger(MyMetaObjectHandler.class);
31+
32+
@Override
33+
public void insertFill(MetaObject metaObject) {
34+
LOGGER.info("start insert fill ....");
35+
metaObject.setValue("operator","Jerry");
36+
}
37+
38+
@Override
39+
public void updateFill(MetaObject metaObject) {
40+
LOGGER.info("start update fill ....");
41+
this.setFieldValByName("operator","Tom",metaObject);
42+
}
43+
}
44+
```
45+
:::warning 注意事项:
46+
- 字段必须声明`TableField`注解,属性`fill`选择对应策略,该申明告知 `Mybatis-Plus` 需要预留注入 `SQL` 字段
47+
- 填充处理器`MyMetaObjectHandler` 在 Spring Boot 中需要声明`@Component` 注入
48+
:::
49+
50+
```java
51+
public enum FieldFill {
52+
/**
53+
* 默认不处理
54+
*/
55+
DEFAULT,
56+
/**
57+
* 插入填充字段
58+
*/
59+
INSERT,
60+
/**
61+
* 更新填充字段
62+
*/
63+
UPDATE,
64+
/**
65+
* 插入和更新填充字段
66+
*/
67+
INSERT_UPDATE
68+
}
69+
```

0 commit comments

Comments
 (0)