diff --git a/mybatis-plus-join-core/src/main/java/com/github/yulichang/toolkit/TableHelper.java b/mybatis-plus-join-core/src/main/java/com/github/yulichang/toolkit/TableHelper.java index f856a5f..47c974b 100644 --- a/mybatis-plus-join-core/src/main/java/com/github/yulichang/toolkit/TableHelper.java +++ b/mybatis-plus-join-core/src/main/java/com/github/yulichang/toolkit/TableHelper.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.TableInfo; import com.baomidou.mybatisplus.core.metadata.TableInfoHelper; import com.baomidou.mybatisplus.core.toolkit.ClassUtils; import com.github.yulichang.config.MPJInterceptorConfig; +import org.apache.ibatis.type.SimpleTypeRegistry; import java.util.Map; import java.util.Objects; @@ -36,32 +37,34 @@ public class TableHelper { @SuppressWarnings("ConstantConditions") public static TableInfo get(Class clazz) { - if (Objects.nonNull(clazz)) { - TableInfo tableInfo = TableInfoHelper.getTableInfo(clazz); - if (Objects.nonNull(tableInfo)) { - return tableInfo; - } - TableInfo info = TABLE_INFO_CACHE.get(clazz); - //尝试获取父类缓存 - Class currentClass = clazz; - while (Object.class != currentClass) { - currentClass = currentClass.getSuperclass(); - info = TABLE_INFO_CACHE.get(ClassUtils.getUserClass(currentClass)); - } - if (Objects.nonNull(info)) { - TABLE_INFO_CACHE.put(currentClass, info); - } else { - if (!load) { - SpringContentUtils.getBean(MPJInterceptorConfig.class); - SpringContentUtils.getBeansOfType(BaseMapper.class); - load = true; - return get(clazz); - } - } - return info; - } else { + if (clazz == null || clazz.isPrimitive() || SimpleTypeRegistry.isSimpleType(clazz) || clazz.isInterface()) { return null; } + TableInfo tableInfo = TableInfoHelper.getTableInfo(clazz); + if (Objects.nonNull(tableInfo)) { + return tableInfo; + } + TableInfo info = TABLE_INFO_CACHE.get(clazz); + if (null != info) { + return info; + } + //尝试获取父类缓存 + Class currentClass = clazz; + while (Object.class != currentClass) { + currentClass = currentClass.getSuperclass(); + info = TABLE_INFO_CACHE.get(ClassUtils.getUserClass(currentClass)); + } + if (Objects.nonNull(info)) { + TABLE_INFO_CACHE.put(currentClass, info); + } else { + if (!load) { + SpringContentUtils.getBean(MPJInterceptorConfig.class); + SpringContentUtils.getBeansOfType(BaseMapper.class); + load = true; + return get(clazz); + } + } + return info; } public static TableInfo getAssert(Class clazz) { diff --git a/mybatis-plus-join-core/src/main/java/com/github/yulichang/wrapper/JoinAbstractLambdaWrapper.java b/mybatis-plus-join-core/src/main/java/com/github/yulichang/wrapper/JoinAbstractLambdaWrapper.java index 1902277..b3947c9 100644 --- a/mybatis-plus-join-core/src/main/java/com/github/yulichang/wrapper/JoinAbstractLambdaWrapper.java +++ b/mybatis-plus-join-core/src/main/java/com/github/yulichang/wrapper/JoinAbstractLambdaWrapper.java @@ -4,7 +4,6 @@ import com.baomidou.mybatisplus.annotation.OrderBy; import com.baomidou.mybatisplus.core.conditions.SharedString; import com.baomidou.mybatisplus.core.conditions.segments.MergeSegments; import com.baomidou.mybatisplus.core.metadata.TableInfo; -import com.baomidou.mybatisplus.core.toolkit.Assert; import com.baomidou.mybatisplus.core.toolkit.Constants; import com.baomidou.mybatisplus.core.toolkit.StringPool; import com.baomidou.mybatisplus.core.toolkit.StringUtils; @@ -345,8 +344,7 @@ public abstract class JoinAbstractLambdaWrapper LogicInfoUtils.getLogicInfoNoAnd( wrapper.getIndex(), wrapper.getJoinClass(), wrapper.isHasAlias(), wrapper.getAlias() diff --git a/mybatis-plus-join-extension/src/main/java/com/github/yulichang/extension/mapping/config/MappingConfig.java b/mybatis-plus-join-extension/src/main/java/com/github/yulichang/extension/mapping/config/MappingConfig.java index e694fb1..239213c 100644 --- a/mybatis-plus-join-extension/src/main/java/com/github/yulichang/extension/mapping/config/MappingConfig.java +++ b/mybatis-plus-join-extension/src/main/java/com/github/yulichang/extension/mapping/config/MappingConfig.java @@ -6,6 +6,8 @@ import com.github.yulichang.toolkit.MPJTableMapperHelper; import lombok.AccessLevel; import lombok.NoArgsConstructor; +import java.util.Objects; + /** * 关系映射配置 * @@ -16,7 +18,8 @@ import lombok.NoArgsConstructor; public class MappingConfig { public static void init() { - TableInfoHelper.getTableInfos().forEach(i -> + TableInfoHelper.getTableInfos().stream().filter(f -> + Objects.nonNull(TableInfoHelper.getTableInfo(f.getEntityType()))).forEach(i -> MPJTableInfoHelper.initTableInfo(i.getEntityType(), MPJTableMapperHelper.getMapper(i.getEntityType()))); } } diff --git a/mybatis-plus-join-extension/src/main/java/com/github/yulichang/extension/mapping/mapper/MPJTableFieldInfo.java b/mybatis-plus-join-extension/src/main/java/com/github/yulichang/extension/mapping/mapper/MPJTableFieldInfo.java index 9bfdf3e..d1a4b4e 100644 --- a/mybatis-plus-join-extension/src/main/java/com/github/yulichang/extension/mapping/mapper/MPJTableFieldInfo.java +++ b/mybatis-plus-join-extension/src/main/java/com/github/yulichang/extension/mapping/mapper/MPJTableFieldInfo.java @@ -152,8 +152,7 @@ public class MPJTableFieldInfo { } private void initBindField(String bindName) { - TableInfo info = TableHelper.get(this.joinClass); - Assert.notNull(info, "未注册的实体类 <%s>", this.joinClass.getSimpleName()); + TableInfo info = TableHelper.getAssert(this.joinClass); //根据属性名查询 Field field = info.getFieldList().stream().filter(i -> i.getProperty().equals(bindName)) .findFirst().map(f -> getField(this.joinClass, f)).orElse(null); @@ -304,11 +303,7 @@ public class MPJTableFieldInfo { } private TableInfo getTableInfo(Class clazz) { - TableInfo tableInfo = TableHelper.get(clazz); - if (tableInfo == null) { - throw ExceptionUtils.mpe("未注册 mapper " + clazz.getName()); - } - return tableInfo; + return TableHelper.getAssert(clazz); } private Field getField(Class table, TableFieldInfo tableFieldInfo) {