mybatis-plus @TableField(fill =) 简介

301 阅读1分钟

@TableField 是 MyBatis-Plus 中用于描述实体类字段与数据库表字段之间对应关系的注解。fill 属性用于指定字段在进行插入或更新操作时的填充策略。MyBatis-Plus 提供了多种填充策略,主要用于自动填充创建时间、更新时间等常见字段。

下面是 @TableField(fill = ) 的一些常见用法和简介:

填充策略

MyBatis-Plus 提供了几种常见的填充策略,定义在 FieldFill 枚举类中:

  • DEFAULT:默认不处理。
  • INSERT:插入时填充字段。
  • UPDATE:更新时填充字段。
  • INSERT_UPDATE:插入和更新时填充字段。

使用示例

假设有一个实体类 User,其中包含 createTimeupdateTime 字段,需要在插入和更新时自动填充:

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();
    }
}

通过上述配置,当你进行插入和更新操作时,createTimeupdateTime 字段将会自动填充当前时间。这样可以减少手动设置时间的代码,提高开发效率。