springboot 表格創建人,創建時間,修改人,修改時間等字段自動填充實現代碼


代碼一

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

    private static final String CREATE_TIME = "createTime";
    private static final String CREATOR_ID = "creatorId";
    private static final String UPDATE_TIME = "updateTime";
    private static final String UPDATE_ID = "updateId";

    /**
     * 新增數據執行
     * @param metaObject
     */
    @Override
    public void insertFill(MetaObject metaObject) {
        Long userId = 1L;// SecurityUtils.getUserId();

//        this.setFieldValByName("createTime", new Date(), metaObject);
//        this.setFieldValByName("creatorId", userId, metaObject);
//       this.setFieldValByName("updateTime", new Date(), metaObject);
//       this.setFieldValByName("updateId", userId, metaObject);

        if (metaObject.hasGetter(CREATOR_ID) && metaObject.getValue(CREATOR_ID) == null) {
            this.setFieldValByName(CREATOR_ID, userId, metaObject);
        }
        if (metaObject.hasGetter(CREATE_TIME) && metaObject.getValue(CREATE_TIME) == null) {
            this.setFieldValByName(CREATE_TIME, new Date(), metaObject);
        }

    }

    /**
     * 更新數據執行
     * @param metaObject
     */
    @Override
    public void updateFill(MetaObject metaObject) {
        Long userId = 10L;// SecurityUtils.getUserId();


        if (metaObject.hasGetter(UPDATE_TIME) && metaObject.getValue(UPDATE_TIME) == null) {
            this.setFieldValByName(UPDATE_TIME, new Date(), metaObject);
        }
        if (metaObject.hasGetter(UPDATE_ID) && metaObject.getValue(UPDATE_ID) == null) {
            this.setFieldValByName(UPDATE_ID, userId, metaObject);
        }
    }
}

 

代碼二

import com.baomidou.mybatisplus.core.config.GlobalConfig;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class MyBatisPlusConfig {
    /**
     * 自動填充功能
     * @return
     */
    @Bean
    public GlobalConfig globalConfig() {
        GlobalConfig globalConfig = new GlobalConfig();
        globalConfig.setMetaObjectHandler(new MetaHandler());
        return globalConfig;
    }
}

代碼三

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

import java.io.Serializable;
import java.util.Date;


@Data
public class BaseEntity  implements Serializable, Cloneable {

    private static final long serialVersionUID = 1L;


    @TableField(value = "creator_id", fill = FieldFill.INSERT) // 新增執行
    private Long creatorId;

    @TableField(value = "create_time", fill = FieldFill.INSERT)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;

    @TableField(value = "update_id", fill = FieldFill.UPDATE) // 新增和更新執行
    private Long updateId;

    @TableField(value = "update_time", fill = FieldFill.UPDATE)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updateTime;

    @Override
    public String toString() {
        return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
    }
}

代碼四 表中沒有這些字段,過濾填充

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.xxxxx.BaseEntity;
import lombok.Data;

import java.util.Date;



@Data
@TableName("xxxdemo")
public class xxxxdemo  extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /** $column.columnComment */
    @TableId(type = IdType.ASSIGN_ID)
    private Long Id;

    /** $column.columnComment */
    private Long xxxdeabc;

    /***/
    private Integer abctestType;

    /** 內容(json) */
    private String content;

    /** 描述 */
    private String description;


    /** 以下字段,如果表中沒有就添加,有則忽略**/
    /***
     *表中不存在的字段 修改時間
     */
    private transient  Date updateTime;
    /***
     *表中不存在的字段 修改人
     */
    private transient   Long updateId;

    /***
     *表中不存在的字段  創建時間
     */
    private transient  Date createTime;
    /***
     *表中不存在的字段 創建人
     */
    private transient   Long creatorId;
}

 

https://blog.csdn.net/weixin_34072159/article/details/92037114

https://gitee.com/baomidou/mybatisplus-spring-boot/issues/IKFLR


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM