@TableField 是 MyBatis-Plus 中用于描述实体类字段与数据库表字段之间对应关系的注解。fill 属性用于指定字段在进行插入或更新操作时的填充策略。MyBatis-Plus 提供了多种填充策略,主要用于自动填充创建时间、更新时间等常见字段。
下面是 @TableField(fill = ) 的一些常见用法和简介:
填充策略
MyBatis-Plus 提供了几种常见的填充策略,定义在 FieldFill 枚举类中:
DEFAULT:默认不处理。INSERT:插入时填充字段。UPDATE:更新时填充字段。INSERT_UPDATE:插入和更新时填充字段。
使用示例
假设有一个实体类 User,其中包含 createTime 和 updateTime 字段,需要在插入和更新时自动填充:
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import java.time.LocalDateTime;
public class User {
private Long id;
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;
@TableField(fill = FieldFill.INSERT_UPDATE)
private LocalDateTime updateTime;
// getters and setters
}
配置填充处理器
为了实现自动填充,需要配置一个处理器,实现 MetaObjectHandler 接口,并在其中定义具体的填充逻辑:
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import java.time.LocalDateTime;
public class MyMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
this.strictInsertFill(metaObject, "createTime", LocalDateTime::now, LocalDateTime.class);
this.strictInsertFill(metaObject, "updateTime", LocalDateTime::now, LocalDateTime.class);
}
@Override
public void updateFill(MetaObject metaObject) {
this.strictUpdateFill(metaObject, "updateTime", LocalDateTime::now, LocalDateTime.class);
}
}
配置 MyBatis-Plus
最后,需要在 MyBatis-Plus 配置中注册这个处理器:
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class MyBatisPlusConfig {
@Bean
public MyMetaObjectHandler metaObjectHandler() {
return new MyMetaObjectHandler();
}
}
通过上述配置,当你进行插入和更新操作时,createTime 和 updateTime 字段将会自动填充当前时间。这样可以减少手动设置时间的代码,提高开发效率。