数据表字段自动填充处理

创建时间:2025-11-13 22:16
长度:1300
浏览:0
评论:0

在数据库表中,有一些字段是可以自动更新的;比如每个表都应该有的create_time、update_time; 一般不建议在数据库层面设置自动更新,我们可以使用mybatis-plus提供的


1. 在类中使用TableField来设置不同的策略(有4种,   DEFAULT, INSERT, UPDATE, INSERT_UPDATE;)

@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
    private Long id;
    private String name;
    private Integer age;
    private String email;

    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
}



第二步:需要实现一个接口

   新建一个目录handle ,创建一个MyMetaObjectHandle.java

@Component
@Slf4j
public class MyMetaObjectHandle implements MetaObjectHandler {
    @Override
    public void insertFill(MetaObject metaObject) {
        log.info("insert Fill.....");
        this.strictInsertFill(metaObject, "createTime", LocalDateTime.class, LocalDateTime.now());
        this.strictInsertFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now());
    }

    @Override
    public void updateFill(MetaObject metaObject) {
        log.info("update Fill.....");
        this.strictInsertFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now());
    }
}


注意:

   •填充原理是直接给entity的属性设置值!!!

   • 字段必须声明TableField 注解,属性fill选择对座策略,该声明告知 Mybatis-P1us 需要预留注入SQL 字段

   • 填充处理器MyMetaobjectHandler 在 Spring Boot 中需要声明 @Component 或 @Bean 注入




评论(共0条)