mybatis-plus 自动填充
时间: 2025-04-29 16:45:13 浏览: 18
### MyBatis-Plus 自动填充功能详解
#### 实现自动填充的关键组件
为了实现自动填充,开发者需自定义 `MetaObjectHandler` 类并重写相应的方法。此处理器负责处理字段的默认值设置,在插入或更新记录时触发[^1]。
```java
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
public class MyMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
this.strictInsertFill(metaObject, "createTime", LocalDateTime.class, LocalDateTime.now());
this.strictInsertFill(metaObject, "createBy", String.class, "system");
}
@Override
public void updateFill(MetaObject metaObject) {
this.strictUpdateFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now());
this.strictUpdateFill(metaObject, "updateBy", String.class, "system");
}
}
```
上述代码展示了如何通过覆盖 `insertFill()` 和 `updateFill()` 方法来指定哪些字段应该在插入和更新操作期间被自动赋值[^2]。
#### 配置文件中的启用配置
为了让这些更改生效,还需要确保应用程序上下文中注册了这个处理器:
```yaml
mybatis-plus:
global-config:
db-config:
id-type: auto
configuration:
map-underscore-to-camel-case: true
meta-object-handler: com.example.demo.handler.MyMetaObjectHandler
```
这段 YAML 片段演示了怎样将之前创建的手柄器类关联到 Spring Boot 应用程序中去[^3]。
#### 字段级别的控制属性
最后一步是在实体类里声明需要自动填充的字段,并为其添加适当注解:
```java
@TableField(fill = FieldFill.INSERT)
private Date createTime;
@TableField(fill = FieldFill.UPDATE)
private Date updateTime;
```
这里使用了 `@TableField` 注解及其 `fill` 属性指明何时应执行该列的数据填充动作——仅当新纪录加入数据库(`INSERT`)或是已有条目得到修改(`UPDATE`)之时。
#### 注意事项
对于删除操作 (`delete`) ,由于其不会改变表内的现有数据行,因此也不会激活任何类型的自动填充值机制。
阅读全文
相关推荐


















