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

posted @   剧里局外  阅读(1643)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
历史上的今天:
2016-06-24 this的面面观
点击右上角即可分享
微信分享提示