package com.bootdo.common.utils;
import java.lang.reflect.Field;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.bootdo.common.constant.FlagConstant;
import cn.hutool.core.date.DateUtil;
/**
* 对象数据补充
* @author tahan
* @date 2021年12月16日 上午9:15:56
*/
public class DataSupplyUtils {
private final static Logger logger = LoggerFactory.getLogger(DataSupplyUtils.class);
private final static String createBy = "createBy";
private final static String createDate = "createDate";
private final static String updateBy = "updateBy";
private final static String updateDate = "updateDate";
private final static String delFlag = "delFlag";
public static <T> void deleteDataSupply(T t) {
// 通过反射获取类的Class对象
@SuppressWarnings("rawtypes")
Class clazz = t.getClass();
logger.info("删除对象{}时补充数据", clazz.getName());
// 获取类型及字段属性
try {
Field delFlagField = clazz.getDeclaredField(delFlag);
try {
if (null != delFlagField) {
delFlagField.setAccessible(true);
delFlagField.set(t, FlagConstant.YES);
}
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
}
}
public static <T> void updateDataSupply(T t) {
// 通过反射获取类的Class对象
@SuppressWarnings("rawtypes")
Class clazz = t.getClass();
logger.info("编辑对象{}时补充数据", clazz.getName());
// 获取类型及字段属性
try {
Field updateByField = clazz.getDeclaredField(updateBy);
Field updateDateField = clazz.getDeclaredField(updateDate);
try {
if (null != updateByField) {
updateByField.setAccessible(true);
updateByField.set(t, ShiroUtils.getUsername());
}
if (null != updateDateField) {
updateDateField.setAccessible(true);
updateDateField.set(t, DateUtil.date());
}
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
}
}
public static <T> void createDataSupply(T t) {
// 通过反射获取类的Class对象
@SuppressWarnings("rawtypes")
Class clazz = t.getClass();
logger.info("创建对象{}时补充数据", clazz.getName());
// 获取类型及字段属性
try {
Field createByField = clazz.getDeclaredField(createBy);
Field createDateField = clazz.getDeclaredField(createDate);
Field delFlagField = clazz.getDeclaredField(delFlag);
try {
if (null != createByField) {
createByField.setAccessible(true);
createByField.set(t, ShiroUtils.getUsername());
}
if (null != createDateField) {
createDateField.setAccessible(true);
createDateField.set(t, DateUtil.date());
}
if (null != delFlagField) {
delFlagField.setAccessible(true);
delFlagField.set(t, FlagConstant.NO);
}
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
}
}
}
通过反射原理给Javabean变量赋值
最新推荐文章于 2022-12-03 19:04:54 发布