Skip to content

Commit 7cdf925

Browse files
committed
Reduce the memory usage of inline ResultMap
1 parent 2299e6d commit 7cdf925

File tree

4 files changed

+30
-7
lines changed

4 files changed

+30
-7
lines changed

src/main/java/org/apache/ibatis/builder/MapperBuilderAssistant.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -308,9 +308,7 @@ private ParameterMap getStatementParameterMap(String parameterMapName, Class<?>
308308
throw new IncompleteElementException("Could not find parameter map " + parameterMapName, e);
309309
}
310310
} else if (parameterTypeClass != null) {
311-
List<ParameterMapping> parameterMappings = new ArrayList<>();
312-
parameterMap = new ParameterMap.Builder(configuration, statementId + "-Inline", parameterTypeClass,
313-
parameterMappings).build();
311+
parameterMap = ParameterMap.inline(statementId, parameterTypeClass);
314312
}
315313
return parameterMap;
316314
}
@@ -330,9 +328,7 @@ private List<ResultMap> getStatementResultMaps(String resultMap, Class<?> result
330328
}
331329
}
332330
} else if (resultType != null) {
333-
ResultMap inlineResultMap = new ResultMap.Builder(configuration, statementId + "-Inline", resultType,
334-
new ArrayList<>(), null).build();
335-
resultMaps.add(inlineResultMap);
331+
resultMaps.add(ResultMap.inline(configuration, statementId, resultType));
336332
}
337333
return resultMaps;
338334
}

src/main/java/org/apache/ibatis/mapping/ParameterMap.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,15 @@ public class ParameterMap {
3232
private ParameterMap() {
3333
}
3434

35+
public static ParameterMap inline(String statementId, Class<?> parameterType) {
36+
ParameterMap inlineParameterMap = new ParameterMap();
37+
inlineParameterMap.id = statementId + "-Inline";
38+
inlineParameterMap.type = parameterType;
39+
// lock down collections
40+
inlineParameterMap.parameterMappings = Collections.emptyList();
41+
return inlineParameterMap;
42+
}
43+
3544
public static class Builder {
3645
private final ParameterMap parameterMap = new ParameterMap();
3746

src/main/java/org/apache/ibatis/mapping/ResultMap.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,21 @@ public class ResultMap {
4848
private ResultMap() {
4949
}
5050

51+
public static ResultMap inline(Configuration configuration, String statementId, Class<?> resultType) {
52+
ResultMap inlineResultMap = new ResultMap();
53+
inlineResultMap.configuration = configuration;
54+
inlineResultMap.id = statementId + "-Inline";
55+
inlineResultMap.type = resultType;
56+
// lock down collections
57+
inlineResultMap.resultMappings = Collections.emptyList();
58+
inlineResultMap.idResultMappings = Collections.emptyList();
59+
inlineResultMap.constructorResultMappings = Collections.emptyList();
60+
inlineResultMap.propertyResultMappings = Collections.emptyList();
61+
inlineResultMap.mappedColumns = Collections.emptySet();
62+
inlineResultMap.mappedProperties = Collections.emptySet();
63+
return inlineResultMap;
64+
}
65+
5166
public static class Builder {
5267
private final ResultMap resultMap = new ResultMap();
5368

src/main/java/org/apache/ibatis/type/SimpleTypeRegistry.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,10 @@ private SimpleTypeRegistry() {
5050

5151
/**
5252
* Tells us if the class passed in is a known common type
53-
* @param clazz The class to check
53+
*
54+
* @param clazz
55+
* The class to check
56+
*
5457
* @return True if the class is known
5558
*/
5659
public static boolean isSimpleType(Class<?> clazz) {

0 commit comments

Comments
 (0)