@TableField
是 MyBatis-Plus提供的一个注解,用于标注实体类的属性与数据库表的字段之间的映射关系。当你在一个实体类的属性上使用@TableField(fill =FieldFill.INSERT)
注解时,你告诉 MyBatis-Plus 在插入记录时自动填充这个字段。
FieldFill.INSERT
是一个枚举值,表示只在插入操作时进行字段的自动填充。
这是一个示例:
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.FieldFill;@TableName("user")
public class User {private Long id;private String name;@TableField(fill = FieldFill.INSERT)private LocalDateTime createTime;
}
在上面的例子中,createTime
字段被标注为在插入操作时自动填充。为了实际实现这个自动填充,你需要定义一个实现了 MetaObjectHandler
接口的类,并在这个类中指定如何填充字段:
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;import java.time.LocalDateTime;@Component
public class MyMetaObjectHandler implements MetaObjectHandler {@Overridepublic void insertFill(MetaObject metaObject) {this.strictInsertFill(metaObject, "createTime", LocalDateTime.class, LocalDateTime.now());}@Overridepublic void updateFill(MetaObject metaObject) {// 如果需要在更新时填充字段,可以在这里实现}
}
在这个例子中,insertFill
方法通过调用 strictInsertFill
方法来指定当插入操作发生时,createTime
字段应该被填充为当前时间。
这样,当你插入一个 User
对象时,无论你是否为 createTime
设置了值,它都会在插入数据库时被自动填充为当前时间。这样可以确保数据的一致性,并且简化了插入操作的代码。