diff --git a/mybatis-flex-core/src/main/java/com/mybatisflex/core/table/TableInfoFactory.java b/mybatis-flex-core/src/main/java/com/mybatisflex/core/table/TableInfoFactory.java index ad752e20..fbf0d4dd 100644 --- a/mybatis-flex-core/src/main/java/com/mybatisflex/core/table/TableInfoFactory.java +++ b/mybatis-flex-core/src/main/java/com/mybatisflex/core/table/TableInfoFactory.java @@ -15,15 +15,7 @@ */ package com.mybatisflex.core.table; -import com.mybatisflex.annotation.Column; -import com.mybatisflex.annotation.ColumnAlias; -import com.mybatisflex.annotation.ColumnMask; -import com.mybatisflex.annotation.Id; -import com.mybatisflex.annotation.InsertListener; -import com.mybatisflex.annotation.NoneListener; -import com.mybatisflex.annotation.SetListener; -import com.mybatisflex.annotation.Table; -import com.mybatisflex.annotation.UpdateListener; +import com.mybatisflex.annotation.*; import com.mybatisflex.core.BaseMapper; import com.mybatisflex.core.FlexGlobalConfig; import com.mybatisflex.core.exception.FlexExceptions; @@ -31,53 +23,20 @@ import com.mybatisflex.core.query.QueryChain; import com.mybatisflex.core.query.QueryColumn; import com.mybatisflex.core.query.QueryCondition; import com.mybatisflex.core.query.QueryWrapper; -import com.mybatisflex.core.util.ClassUtil; -import com.mybatisflex.core.util.CollectionUtil; -import com.mybatisflex.core.util.Reflectors; -import com.mybatisflex.core.util.StringUtil; +import com.mybatisflex.core.util.*; import org.apache.ibatis.io.ResolverUtil; import org.apache.ibatis.reflection.Reflector; import org.apache.ibatis.reflection.TypeParameterResolver; -import org.apache.ibatis.type.JdbcType; -import org.apache.ibatis.type.TypeException; -import org.apache.ibatis.type.TypeHandler; -import org.apache.ibatis.type.TypeHandlerRegistry; -import org.apache.ibatis.type.UnknownTypeHandler; -import com.mybatisflex.core.util.MapUtil; +import org.apache.ibatis.type.*; -import java.lang.reflect.Constructor; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.lang.reflect.Modifier; -import java.lang.reflect.ParameterizedType; -import java.lang.reflect.Type; -import java.lang.reflect.TypeVariable; +import java.lang.reflect.*; import java.math.BigDecimal; import java.math.BigInteger; import java.sql.Time; import java.sql.Timestamp; -import java.time.Instant; -import java.time.LocalDate; -import java.time.LocalDateTime; -import java.time.LocalTime; -import java.time.Month; -import java.time.OffsetDateTime; -import java.time.OffsetTime; -import java.time.Year; -import java.time.YearMonth; -import java.time.ZonedDateTime; +import java.time.*; import java.time.chrono.JapaneseDate; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.Date; -import java.util.HashMap; -import java.util.HashSet; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Set; +import java.util.*; import java.util.concurrent.ConcurrentHashMap; import java.util.stream.Collectors; @@ -222,7 +181,29 @@ public class TableInfoFactory { // 初始化表名 Table table = entityClass.getAnnotation(Table.class); - if (table != null) { + if (table == null) { + ViewObject vo = entityClass.getAnnotation(ViewObject.class); + if (vo != null) { + TableInfo refTableInfo = ofEntityClass(vo.ref()); + // 设置 VO 类对应的真实的表名 + tableInfo.setSchema(refTableInfo.getSchema()); + tableInfo.setTableName(refTableInfo.getTableName()); + // 将 @Table 注解的属性复制到 VO 类当中 + if (vo.copyTableProps()) { + tableInfo.setComment(refTableInfo.getComment()); + tableInfo.setCamelToUnderline(refTableInfo.isCamelToUnderline()); + tableInfo.setDataSource(refTableInfo.getDataSource()); + + tableInfo.setOnSetListeners(refTableInfo.getOnSetListeners()); + tableInfo.setOnInsertColumns(refTableInfo.getOnInsertColumns()); + tableInfo.setOnUpdateListeners(refTableInfo.getOnUpdateListeners()); + } + } else { + // 默认为类名转驼峰下划线 + String tableName = StringUtil.camelToUnderline(entityClass.getSimpleName()); + tableInfo.setTableName(tableName); + } + } else { tableInfo.setSchema(table.schema()); tableInfo.setTableName(table.value()); tableInfo.setCamelToUnderline(table.camelToUnderline()); @@ -255,10 +236,6 @@ public class TableInfoFactory { if (StringUtil.isNotBlank(table.dataSource())) { tableInfo.setDataSource(table.dataSource()); } - } else { - // 默认为类名转驼峰下划线 - String tableName = StringUtil.camelToUnderline(entityClass.getSimpleName()); - tableInfo.setTableName(tableName); } // 初始化字段相关