关于为什么我要写这篇文章,主要是因为在开发的时候写微服务的时候,采用的ShardingJDBC进行分库导致Mybatis-plus的自动填充功能无法正常自动调用,无奈我只能用反射机制自己写一个进行手动调用来进行createTime、updateTime的填充
我们通过泛型增加灵活度,这样可以更好的控制
public class TimeMetaHandler {
public static <T> T createTimeHandler(T autoFillObject) throws NoSuchFieldException, IllegalAccessException {
final Class<?> autoFillObjectClass = autoFillObject.getClass();
//获取属性上的注解,判断是否携带@TableField(value = "create_time" , fill = FieldFill.INSERT)
final Field createTime = autoFillObjectClass.getDeclaredField("createTime");
final FieldFill fill = createTime.getAnnotation(TableField.class).fill();
if(FieldFill.INSERT.equals(fill)){
createTime.setAccessible(true);
createTime.set(autoFillObject,LocalDateTime.now());
}
return autoFillObject;
}
}
这里我仅提供思路
DateTimeFormatter.ofPattern("yyyy-MM-dd ::HH:mm:ss")进行日期格式化