diff --git a/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/annotation/EnableTimeSuffix.java b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/annotation/EnableTimeSuffix.java new file mode 100644 index 0000000000000000000000000000000000000000..524ec7e03951699bc56184950423096de636fba7 --- /dev/null +++ b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/annotation/EnableTimeSuffix.java @@ -0,0 +1,32 @@ +package com.gitee.sunchenbin.mybatis.actable.annotation; + +import com.gitee.sunchenbin.mybatis.actable.constants.DateTimeFormatConstant; + +import java.lang.annotation.*; + +/** + *

+ * 表名时间后缀 + *

+ * + * @author Elphen + * @version 1.0.0 + * @date 2021-03-11 11:17 + */ +@Target(ElementType.TYPE) +@Retention(RetentionPolicy.RUNTIME) +@Documented +public @interface EnableTimeSuffix { + /** + * 开启时间后缀 + * @return + */ + boolean value() default true; + + /** + * 时间后缀格式 + *
使用常量类 {@link DateTimeFormatConstant} + * @return + */ + String pattern() default DateTimeFormatConstant.DATE_MONTH; +} diff --git a/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/constants/DateTimeFormatConstant.java b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/constants/DateTimeFormatConstant.java new file mode 100644 index 0000000000000000000000000000000000000000..2d1a03fe43bd70b5f3601e8a74d1e6284c0a40a0 --- /dev/null +++ b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/constants/DateTimeFormatConstant.java @@ -0,0 +1,51 @@ +package com.gitee.sunchenbin.mybatis.actable.constants; + +/** + *

+ * 日期时间格式常量类 + *

+ * + * @author Liu YuanPeng + * @version 1.0.0 + * @date 2021-03-10 14:57 + */ +public class DateTimeFormatConstant { + /** + * 日期格式,精确到日期 + */ + public static final String DATE_DAY = "yyyyMMdd"; + /** + * 日期格式,精确到月份 + */ + public static final String DATE_MONTH = "yyyyMM"; + /** + * 日期格式,精确到年 + */ + public static final String DATE_YEAR = "yyyy"; + /** + * 日期时间格式,精确到秒 + */ + public static final String DATE_TIME_SEC = "yyyyMMddHHmmss"; + /** + * 日期时间格式,精确到分 + */ + public static final String DATE_TIME_MIN = "yyyyMMddHHmm"; + /** + * 日期时间格式,精确到小时 + */ + public static final String DATE_TIME_HOUR = "yyyyMMddHH"; + + private String pattern; + + DateTimeFormatConstant(String pattern) { + this.pattern = pattern; + } + + public String getPattern() { + return pattern; + } + + public void setPattern(String pattern) { + this.pattern = pattern; + } +} diff --git a/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/utils/ColumnUtils.java b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/utils/ColumnUtils.java index c120fbb7e32dfd4acb64ebb0d537627f52127138..1a909c4ef1a750bec9edd8f3060e957a1b04430d 100644 --- a/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/utils/ColumnUtils.java +++ b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/utils/ColumnUtils.java @@ -11,12 +11,14 @@ import com.gitee.sunchenbin.mybatis.actable.constants.MySqlCharsetConstant; import com.gitee.sunchenbin.mybatis.actable.constants.MySqlEngineConstant; import com.gitee.sunchenbin.mybatis.actable.constants.MySqlTypeConstant; import com.google.common.base.CaseFormat; +import org.apache.commons.lang.time.DateFormatUtils; import org.springframework.beans.BeanUtils; import org.springframework.util.StringUtils; import javax.persistence.Id; import java.lang.reflect.Field; import java.util.Arrays; +import java.util.Date; public class ColumnUtils { @@ -28,23 +30,31 @@ public class ColumnUtils { Table tableName = clasz.getAnnotation(Table.class); javax.persistence.Table tableNameCommon = clasz.getAnnotation(javax.persistence.Table.class); TableName tableNamePlus = clasz.getAnnotation(TableName.class); + EnableTimeSuffix enableTimeSuffix = clasz.getAnnotation(EnableTimeSuffix.class); if (!hasTableAnnotation(clasz)){ return null; } - if (tableName != null && !StringUtils.isEmpty(tableName.name())){ - return tableName.name(); + String finalTableName = ""; + if (tableName != null && !StringUtils.isEmpty(tableName.name())) { + finalTableName = tableName.name(); } - if (tableName != null && !StringUtils.isEmpty(tableName.value())){ - return tableName.value(); + if (tableName != null && !StringUtils.isEmpty(tableName.value())) { + finalTableName = tableName.value(); } - if (tableNameCommon != null && !StringUtils.isEmpty(tableNameCommon.name())){ - return tableNameCommon.name(); + if (tableNameCommon != null && !StringUtils.isEmpty(tableNameCommon.name())) { + finalTableName = tableNameCommon.name(); } - if (tableNamePlus != null && !StringUtils.isEmpty(tableNamePlus.value())){ - return tableNamePlus.value(); + if (tableNamePlus != null && !StringUtils.isEmpty(tableNamePlus.value())) { + finalTableName = tableNamePlus.value(); } - // 都为空时采用类名按照驼峰格式转会为表名 - return getBuildLowerName(clasz.getSimpleName()); + if (StringUtils.isEmpty(finalTableName)) { + // 都为空时采用类名按照驼峰格式转会为表名 + finalTableName = getBuildLowerName(clasz.getSimpleName()); + } + if(null != enableTimeSuffix && enableTimeSuffix.value()){ + finalTableName = appendTimeSuffix(finalTableName, enableTimeSuffix.pattern()); + } + return finalTableName; } public static String getTableComment(Class clasz){ @@ -349,4 +359,22 @@ public class ColumnUtils { } return isSimple; } + + + /** + * 添加时间后缀 + * + * @param tableName 表名 + * @param pattern 时间格式 + * @return + */ + public static String appendTimeSuffix(String tableName, String pattern) { + String suffix = ""; + try { + suffix = DateFormatUtils.format(new Date(), pattern); + } catch (Exception e) { + throw new RuntimeException("无法转换时间格式" + pattern); + } + return tableName + "_" + suffix; + } }