数据表字段自动填充处理
创建时间: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 注入