fix: 使 VO 类支持重名映射与监听器。

This commit is contained in:
Suomm 2024-04-02 10:54:35 +08:00
parent 7609ead91c
commit 3b90960156

View File

@ -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);
}
// 初始化字段相关