mybatis-plus自动填充字段

mybatis-plus自动填充字段

1. 引入mybatis-plus 依赖

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.3.2</version>
</dependency>

2.配置字段

在表对应的实体类中需要自动填充的字段上面添加@TableField 注解:

public class Demo {
    
    
    /**
     * 创建时间
     */
    @TableField(fill = FieldFill.INSERT)
    private Date createTime;

    /**
     * 更新时间
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Date updateTime;
}

其中我们使用了注解中的 fill 属性(字段自动填充策略):
FieldFill.INSERT:表示插入时填充字段;
FieldFill.INSERT_UPDATE:表示插入和更新时填充字段;
具体更多属性值我们可以查看 FieldFill 的源码:

public enum FieldFill {
    
    
    /**
     * 默认不处理
     */
    DEFAULT,
    /**
     * 插入时填充字段
     */
    INSERT,
    /**
     * 更新时填充字段
     */
    UPDATE,
    /**
     * 插入和更新时填充字段
     */
    INSERT_UPDATE
}

3.配置填充规则

import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;

import java.util.Date;

@Component
public class MyBatisMetaObjectHandler implements MetaObjectHandler {
    
    

    /**
     * 自定义插入时填充规则
     */
    @Override
    public void insertFill(MetaObject metaObject) {
    
    
        // 注意是类属性字段名称,不是表字段名称
        this.setFieldValByName("createTime", new Date(), metaObject);
        this.setFieldValByName("updateTime", new Date(), metaObject);
    }

    /**
     * 自定义更新时填充规则
     */
    @Override
    public void updateFill(MetaObject metaObject) {
    
    
        // 注意是类属性字段名称,不是表字段名称
        this.setFieldValByName("updateTime", new Date(), metaObject);
    }

}

在这里,我们通过实现 MetaObjectHandler 接口类的 insertFill 方法和 updateFill 方法来实现自动填充功能:

insertFill 方法指定了在插入值时如何自动填充字段值,而 updateFill 方法则指定了在更新值时如何自动填充字段值;
通过调用 MetaObjectHandlersetFieldValByName 方法实现字段值的填充,第一个参数为类属性的字段名称,第二个参数为字段要填充的值。
配置好后,当 MybatisPlus 插入和更新数据库时就会字段为我们填充指定的字段值。也可以应用于动态设置新增或者删除修改的操作用户。

猜你喜欢

转载自blog.csdn.net/qq_44772660/article/details/113174241