This commit is contained in:
yulichang 2022-12-02 16:23:46 +08:00
parent 5cc0c32004
commit 078cc77857

View File

@ -182,8 +182,12 @@ public class MPJInterceptor implements Interceptor {
TableFieldInfo info = i.getTableFieldInfo(); TableFieldInfo info = i.getTableFieldInfo();
if (StringUtils.isNotBlank(i.getAlias())) { if (StringUtils.isNotBlank(i.getAlias())) {
//优先别名查询 selectFunc selectAs //优先别名查询 selectFunc selectAs
Class<?> aliasField = fieldMap.containsKey(i.getAlias()) ? fieldMap.get(i.getAlias()).getType() : null;
if (aliasField == null) {
continue;
}
ResultMapping.Builder builder = new ResultMapping.Builder(ms.getConfiguration(), i.getAlias(), ResultMapping.Builder builder = new ResultMapping.Builder(ms.getConfiguration(), i.getAlias(),
i.getAlias(), getAliasField(resultType, fieldMap, i.getAlias())); i.getAlias(), aliasField);
if (i.getFuncEnum() == null || StringUtils.isBlank(i.getFuncEnum().getSql())) { if (i.getFuncEnum() == null || StringUtils.isBlank(i.getFuncEnum().getSql())) {
Field f = fieldMap.get(i.getAlias()); Field f = fieldMap.get(i.getAlias());
if (f == null) { if (f == null) {
@ -300,7 +304,7 @@ public class MPJInterceptor implements Interceptor {
.collect(Collectors.joining(StringPool.DASH)); .collect(Collectors.joining(StringPool.DASH));
} }
//双检 //双检
if (!ms.getConfiguration().getResultMapNames().contains(childId)) { if (!ms.getConfiguration().hasResultMap(childId)) {
ResultMap build = new ResultMap.Builder(ms.getConfiguration(), childId, mybatisLabel.getOfType(), childMapping).build(); ResultMap build = new ResultMap.Builder(ms.getConfiguration(), childId, mybatisLabel.getOfType(), childMapping).build();
MPJInterceptor.addResultMap(ms, childId, build); MPJInterceptor.addResultMap(ms, childId, build);
} }
@ -364,20 +368,12 @@ public class MPJInterceptor implements Interceptor {
return new ResultMap.Builder(ms.getConfiguration(), id, resultType, EMPTY_RESULT_MAPPING).build(); return new ResultMap.Builder(ms.getConfiguration(), id, resultType, EMPTY_RESULT_MAPPING).build();
} }
/**
* 获取result指定名称的字段
*/
private Class<?> getAliasField(Class<?> resultType, Map<String, Field> fieldMap, String alias) {
Field field = fieldMap.get(alias);
Assert.notNull(field, "Result Class <%s> not find Field <%s>", resultType.getSimpleName(), alias);
return field.getType();
}
/** /**
* Configuration 添加resultMap * Configuration 添加resultMap
*/ */
private synchronized static void addResultMap(MappedStatement ms, String key, ResultMap resultMap) { private synchronized static void addResultMap(MappedStatement ms, String key, ResultMap resultMap) {
if (!ms.getConfiguration().getResultMapNames().contains(key)) { if (!ms.getConfiguration().hasResultMap(key)) {
ms.getConfiguration().addResultMap(resultMap); ms.getConfiguration().addResultMap(resultMap);
} }
} }