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);
}
}