mybatisplus自定义填充公共字段 ,即没有传的字段自动填充

package com.lx.conf;

import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import com.lx.context.SessionUser;
import com.lx.utils.FitAbstractEntityInfo;
import org.apache.ibatis.reflection.MetaObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;

import java.util.Date;

/**
 * mybatisplus自定义填充公共字段 ,即没有传的字段自动填充
 * @author liu wei ping
 */
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {

	private static final Logger LOGGER = LoggerFactory.getLogger(MyMetaObjectHandler.class);

	/**
	 * 新增填充
	 * @param metaObject
	 */
	@Override
	public void insertFill(MetaObject metaObject) {
		LOGGER.info("insert公共字段填充Start");
		Date now = new Date();
		Object createUserId = getFieldValByName("createUserId", metaObject);
		Object createTime = getFieldValByName("createTime", metaObject);
	    Object createUserName = getFieldValByName("createUserName", metaObject);
		Object locno = getFieldValByName("locno", metaObject);
		SessionUser sessionUser = FitAbstractEntityInfo.loadCurrentUser();
		if (createUserId == null) {
			setFieldValByName("createUserId", sessionUser.getUserId(), metaObject);
		}
		if (createTime == null) {
			setFieldValByName("createTime", now, metaObject);
		}
		if (createUserName == null) {
			setFieldValByName("createUserName", sessionUser.getUserName(), metaObject);
        }
		if (locno == null) {
			setFieldValByName("locno", sessionUser.getLocno(), metaObject);
		}
		LOGGER.info("公共字段填充end");
	}

	/**
	 * 更新填充
	 * @param metaObject
	 */
	@Override
	public void updateFill(MetaObject metaObject) {
		LOGGER.info("update公共字段填充Start");
		Object updateUserId = getFieldValByName("updateUserId", metaObject);
        Object updateUserName = getFieldValByName("updateUserName", metaObject);
		Object updateTime = getFieldValByName("updateTime", metaObject);
		Object locno = getFieldValByName("locno", metaObject);
		SessionUser sessionUser = FitAbstractEntityInfo.loadCurrentUser();
	    if (updateUserName == null) {
	        setFieldValByName("updateUserName", sessionUser.getUserName(), metaObject);
	    }
		if (updateUserId == null) {
			setFieldValByName("updateUserId", sessionUser.getUserId(), metaObject);
		}
		if (updateTime == null) {
			setFieldValByName("updateTime", new Date(), metaObject);
		}
		if (locno == null) {
			setFieldValByName("locno", sessionUser.getLocno(), metaObject);
		}
		LOGGER.info("update公共字段填充end");
	}
}


package com.lx.context;

/**
 * 
 * @author liu wei ping
 *
 */
public class SessionUser {

    private String userId;

    private String userName;

    private String userAccount;

    /**
     * 仓库编码
     */
    private String locno;

    public String getUserId() {
        return userId;
    }

    public void setUserId(String userId) {
        this.userId = userId;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getUserAccount() {
        return userAccount;
    }

    public void setUserAccount(String userAccount) {
        this.userAccount = userAccount;
    }

	public String getLocno() {
		return locno;
	}

	public void setLocno(String locno) {
		this.locno = locno;
	}
    
}


package com.lx.utils;

import com.lx.context.SessionUser;

/**
 * 填充抽象实体属性
 *
 * @author liu wei ping
 * @date 2018/11/21
 **/
public final class FitAbstractEntityInfo {

    private FitAbstractEntityInfo() {
    }

    private static final String DEFAULT_OPERATOR_ID = "system";
    private static final String DEFAULT_OPERATOR_NAME = "超级管理员";
    private static final String DEFAULT_LOCNO = "0";

    /**
     * 用于填充AbstractBaseEntity实体类的公共属性(用于新增时进行默认值填充)
     *
     * @param entity
     */
  /*  public static void fitAbstractEntityCommProperyForAdd(AbstractBaseEntity entity) {
        UserInfo userInfo = ContextUtils.getUserInfo();
        if (userInfo != null && userInfo.getExtendsProps() != null) {
            String operateUserName = userInfo.getNickname();
            String operateUserId = userInfo.getUsername();
            entity.setCreateUserName(operateUserName);
            entity.setCreateUserId(operateUserId);
        } else {
            entity.setCreateUserId(DEFAULT_OPERATOR_ID);
            entity.setCreateUserName(DEFAULT_OPERATOR_NAME);
        }
        Date date = new Date();
        entity.setCreateTime(date);
        entity.setDelFlag(GlobalConstants.DELETE_NO);
        entity.setUpdateUserName(null);
        entity.setUpdateTime(null);
        entity.setUpdateUserId(null);
    }

    *//**
     * 用于填充AbstractBaseEntity实体类的公共属性(用于新增时进行默认值填充)
     *
     * @param entity
     *//*
    public static void fitAbstractEntityCommProperyForEdit(AbstractBaseEntity entity) {
        UserInfo userInfo = ContextUtils.getUserInfo();
        if (userInfo != null && userInfo.getExtendsProps() != null) {
            String operateUserName = userInfo.getNickname();
            String operateUserId = userInfo.getUsername();
            entity.setUpdateUserName(operateUserName);
            entity.setUpdateUserId(operateUserId);
        } else {
            entity.setUpdateUserId(DEFAULT_OPERATOR_ID);
            entity.setUpdateUserName(DEFAULT_OPERATOR_NAME);
        }
        Date date = new Date();
        entity.setUpdateTime(date);
        entity.setDelFlag(GlobalConstants.DELETE_NO);
        entity.setCreateUserName(null);
        entity.setCreateUserId(null);
        entity.setCreateTime(null);
    }

    *//**
     * 用于填充AbstractBaseEntity实体类的公共属性(用于新增时进行默认值填充)
     *
     * @param entity
     *//*
    public static void fitAbstractWarehouseEntityCommProperyForAdd(AbstractWarehouseBaseEntity entity) {
        if (null != entity) {
            String locno = FitAbstractEntityInfo.loadCurrentUserLocno();
            entity.setLocno(locno);
            FitAbstractEntityInfo.fitAbstractEntityCommProperyForAdd(entity);
        }
    }

    *//**
     * 用于填充AbstractBaseEntity实体类的公共属性(用于新增时进行默认值填充)
     *
     * @param entity
     *//*
    public static void fitAbstractWarehouseEntityCommProperyForEdit(AbstractWarehouseBaseEntity entity) {
        if (null != entity) {
            String locno = FitAbstractEntityInfo.loadCurrentUserLocno();
            entity.setLocno(locno);
            FitAbstractEntityInfo.fitAbstractEntityCommProperyForEdit(entity);
        }
    }*/

    /**
     * 获取当前用户所属仓库
     *
     * @return
     */
    public static String loadCurrentUserLocno() {
        /*UserInfo userInfo = ContextUtils.getUserInfo();
        if (userInfo != null && userInfo.getExtendsProps() != null) {
            Map<String, String> map = userInfo.getExtendsProps();
            return map.get("depotCode") != null ? map.get("depotCode") : DEFAULT_LOCNO;
        }*/
        return FitAbstractEntityInfo.DEFAULT_LOCNO;
    }

    public static SessionUser loadCurrentUser() {
        SessionUser user = new SessionUser();
        //UserInfo userInfo = ContextUtils.getUserInfo();
        /*if (userInfo != null) {
            user.setLocno(loadCurrentUserLocno());
            user.setUserId(userInfo.getUsername());
            user.setUserName(userInfo.getNickname());
            return user;
        }*/
        user.setLocno(loadCurrentUserLocno());
        user.setUserId(DEFAULT_OPERATOR_ID);
        user.setUserName(DEFAULT_OPERATOR_NAME);
        user.setUserAccount(DEFAULT_OPERATOR_ID);
        return user;
    }
}

效果演示图如下:

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值