栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

mybatis-plus自动填充

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

mybatis-plus自动填充

需求描述

我们在做项目的时候,数据库中的某些字段如:创建人(create_user)、创建时间(create_time)、更新人(update_user)、更新时间(update_time)我们希望自动填充,不需要手动更新。

实体类
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.annotations.ApiModelProperty;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.util.Date;


public class BasicEntity  implements Serializable {
	private static final long serialVersionUID = 1L;

	@ApiModelProperty("创建人")
	@TableField(value = "create_user", fill = FieldFill.INSERT)
	private Long createUser;

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

	@JsonSerialize(using = ToStringSerializer.class)
	@ApiModelProperty("更新人")
	@TableField(value = "update_user", fill = FieldFill.INSERT_UPDATE)
	private Long updateUser;

	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@ApiModelProperty("更新时间")
	@TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
	private Date updateTime;

	@ApiModelProperty("业务状态")
	@TableField(value = "status")
	private Integer status;

	@TableLogic
	@ApiModelProperty("是否已删除")
	@TableField(value = "is_deleted")
	private Integer isDeleted;

}

填充器
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.secure.utils.SecureUtil;
import org.springframework.stereotype.Component;
import java.util.Date;

@Component
public class MetaHandler  implements MetaObjectHandler {


	
	@Override
	public void insertFill(MetaObject metaObject) {
		BladeUser user = SecureUtil.getUser();
		boolean hasSetter = metaObject.hasSetter("createTime");
		if (hasSetter) {
			this.setFieldValByName("createTime", new Date(), metaObject);
			this.setFieldValByName("updateUser", user.getUserId(), metaObject);
			this.setFieldValByName("updateTime", new Date(), metaObject);
			this.setFieldValByName("updateUser", user.getUserId(), metaObject);
		}
	}

	
	@Override
	public void updateFill(MetaObject metaObject) {
		BladeUser user = SecureUtil.getUser();
		if (ObjectUtil.isEmpty(getFieldValByName("updateTime", metaObject))) {
			this.setFieldValByName("updateTime", new Date(), metaObject);
			this.setFieldValByName("updateUser", user.getUserId(), metaObject);
		}
	}

}

全局配置
import com.baomidou.mybatisplus.core.config.GlobalConfig;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class MyBatisPlusConfig {
	
	@Bean
	public GlobalConfig globalConfig() {
		GlobalConfig globalConfig = new GlobalConfig();
		globalConfig.setMetaObjectHandler(new MetaHandler());
		return globalConfig;
	}
}

重启项目,以上四个字段便自动维护

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/940685.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号