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