show-cloud(八) 公共字段自動填充

show-cloud對實體字段有些做了自動填充、有些沒有。而且寫的不夠嚴謹,對自動填充類進行了部分擴展。

package org.go.show.common.context;

import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import net.sf.jsqlparser.expression.LongValue;
import org.apache.ibatis.reflection.MetaObject;
import org.go.show.common.utils.DateTimeUtils;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;

import javax.jws.Oneway;
import java.sql.Timestamp;
import java.util.Date;

/**
 * 自定義公共字段填充
 */
@Component
public class ShowMetaObjectHandler implements MetaObjectHandler {

    @Override
    public void updateFill(MetaObject metaObject) {
//設置修改記錄的相關信息
        if (this.hasFiledName(metaObject, "updatedTime") && this.filedValIsNull(metaObject, "updatedTime")) {
            //        修改時間
            setUpdateFieldValByName("updatedTime", DateTimeUtils.format(new Date(), DateTimeUtils.DATE_TIME_FORMAT), metaObject);
        }

        //設置修改記錄的相關信息
        if (this.hasFiledName(metaObject, "version") && this.filedValIsNull(metaObject, "version")) {
            //        修改時間
            setUpdateFieldValByName("version", 0, metaObject);
        }

        if (this.hasFiledName(metaObject, "updatorId") && this.filedValIsNull(metaObject, "updatorId")) {
            //        修改人id
            setUpdateFieldValByName("updatorId",111L, metaObject);
        }

        if (this.hasFiledName(metaObject, "updatorName") && this.filedValIsNull(metaObject, "updatorName")) {
//        修改人名字
            setUpdateFieldValByName("updatorName", DateTimeUtils.format(new Date(), DateTimeUtils.DATE_TIME_FORMAT), metaObject);
        }

    }


    @Override
    public void insertFill(MetaObject metaObject) {
        if (this.hasFiledName(metaObject, "createdTime") && this.filedValIsNull(metaObject, "createdTime")) {
//        創建時間
            setFieldValByName("createdTime", DateTimeUtils.format(new Date(), DateTimeUtils.DATE_TIME_FORMAT), metaObject);
        }

        if (this.hasFiledName(metaObject, "creatorId")) {
            //        創建人id
            setFieldValByName("creatorId",1111L, metaObject);
        }

        if (this.hasFiledName(metaObject, "creatorName")) {
//        創建人名字
            setFieldValByName("creatorName", DateTimeUtils.format(new Date(), DateTimeUtils.DATE_TIME_FORMAT), metaObject);
        }
//設置修改記錄的相關信息
        setUpdateInfos(metaObject);

    }

    private void setUpdateInfos(MetaObject metaObject) {
        if (this.hasFiledName(metaObject, "updatedTime") && this.filedValIsNull(metaObject, "updatedTime")) {
            //        修改時間
            setFieldValByName("updatedTime", DateTimeUtils.format(new Date(), DateTimeUtils.DATE_TIME_FORMAT), metaObject);
        }

        if (this.hasFiledName(metaObject, "updatorId") && this.filedValIsNull(metaObject, "updatorId")) {
            //        修改人id
            setFieldValByName("updatorId",111L, metaObject);
        }

        if (this.hasFiledName(metaObject, "updatorName") && this.filedValIsNull(metaObject, "updatorName")) {
//        修改人名字
            setFieldValByName("updatorName", DateTimeUtils.format(new Date(), DateTimeUtils.DATE_TIME_FORMAT), metaObject);
        }
    }

    /**
     * 判斷字段的值是否爲空  如果設置了值則不填充 沒有設置才填充
     *
     * @param metaObject
     * @param filedName
     * @return
     */
    private boolean filedValIsNull(MetaObject metaObject, String filedName) {
        Object objVal = getFieldValByName(filedName, metaObject);
        if (objVal == null) {
            return true;
        }
        return false;
    }

    /**
     * 判斷字段是否存在set方法 有set方法才需要設置值
     *
     * @param metaObject
     * @param createdTime
     * @return
     */
    private boolean hasFiledName(MetaObject metaObject, String createdTime) {
        return metaObject.hasSetter(createdTime);
    }


}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章