MyBatis-Plus字段自动填充功能

发布时间:2024年01月16日

第一章、插入数据库字段时通常需要带上创建时间

①在设计数据库表时,通常必须有以下字段,而MyBatis-Plus提供字段填充功能可以让我们轻松实现插入数据的同时,在createTime字段或者updatedTime填充当前时间。

自增ID
创建时间:createdTime
修改时间:updatedTime
创建人:createBy
修改人:updateBy

②确保数据库时间字段类型与实体类中的字段类型匹配
如:实体类中的字段类型为java.util.Date
则数据库的字段为TIMESTAMP

③在application.yaml文件中配置下面这些信息,允许bean定义重写,其实不配置也行,就当拓展知识点了。

spring:
  main:
    allow-bean-definition-overriding: true

第二章、配置MetaObjectHandler类开启自动填充功能

①创建一个类并实现MetaObjectHandler接口,该接口包含了insertFill和updateFill两个方法,用于指定在插入和更新操作时自动填充的字段

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 MyMetaObjectHandler implements MetaObjectHandler {

    @Override
    public void insertFill(MetaObject metaObject) {
        this.strictInsertFill(metaObject, "createdTime", Date.class, new Date());
        // 其他需要插入填充的字段
    }

    @Override
    public void updateFill(MetaObject metaObject) {
        this.strictUpdateFill(metaObject, "updatedTime", Date.class, new Date());
        // 其他需要更新填充的字段
    }
}

第三章、字段上使用@TableField

实体类的相应字段上使用@TableField注解,指定需要自动填充的字段。

@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@TableName("table_user")
public class user{
    @TableId(type = IdType.AUTO)
    private Long id;

    @TableField(value = "created_time",fill = FieldFill.INSERT)
    private Date createdTime;

    @TableField(value = "updated_time",fill = FieldFill.INSERT_UPDATE)
    private Date updatedTime;

    // 其他字段
}

配置好以后,尝试插入数据,发现插入数据的同时created_time字段已经填充了当前时间。

文章来源:https://blog.csdn.net/baomingshu/article/details/135634147
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。