Skip to content

Commit 68c93fb

Browse files
committed
Polishing to use fluent style coding as possible in MapperBuilderAssistant
1 parent b03b719 commit 68c93fb

File tree

1 file changed

+71
-84
lines changed

1 file changed

+71
-84
lines changed

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

Lines changed: 71 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -128,11 +128,9 @@ public Cache useNewCache(Class<? extends Cache> typeClass,
128128
boolean readWrite,
129129
boolean blocking,
130130
Properties props) {
131-
typeClass = valueOrDefault(typeClass, PerpetualCache.class);
132-
evictionClass = valueOrDefault(evictionClass, LruCache.class);
133131
Cache cache = new CacheBuilder(currentNamespace)
134-
.implementation(typeClass)
135-
.addDecorator(evictionClass)
132+
.implementation(valueOrDefault(typeClass, PerpetualCache.class))
133+
.addDecorator(valueOrDefault(evictionClass, LruCache.class))
136134
.clearInterval(flushInterval)
137135
.size(size)
138136
.readWrite(readWrite)
@@ -146,8 +144,7 @@ public Cache useNewCache(Class<? extends Cache> typeClass,
146144

147145
public ParameterMap addParameterMap(String id, Class<?> parameterClass, List<ParameterMapping> parameterMappings) {
148146
id = applyCurrentNamespace(id, false);
149-
ParameterMap.Builder parameterMapBuilder = new ParameterMap.Builder(configuration, id, parameterClass, parameterMappings);
150-
ParameterMap parameterMap = parameterMapBuilder.build();
147+
ParameterMap parameterMap = new ParameterMap.Builder(configuration, id, parameterClass, parameterMappings).build();
151148
configuration.addParameterMap(parameterMap);
152149
return parameterMap;
153150
}
@@ -167,13 +164,13 @@ public ParameterMapping buildParameterMapping(
167164
Class<?> javaTypeClass = resolveParameterJavaType(parameterType, property, javaType, jdbcType);
168165
TypeHandler<?> typeHandlerInstance = resolveTypeHandler(javaTypeClass, typeHandler);
169166

170-
ParameterMapping.Builder builder = new ParameterMapping.Builder(configuration, property, javaTypeClass);
171-
builder.jdbcType(jdbcType);
172-
builder.resultMapId(resultMap);
173-
builder.mode(parameterMode);
174-
builder.numericScale(numericScale);
175-
builder.typeHandler(typeHandlerInstance);
176-
return builder.build();
167+
return new ParameterMapping.Builder(configuration, property, javaTypeClass)
168+
.jdbcType(jdbcType)
169+
.resultMapId(resultMap)
170+
.mode(parameterMode)
171+
.numericScale(numericScale)
172+
.typeHandler(typeHandlerInstance)
173+
.build();
177174
}
178175

179176
public ResultMap addResultMap(
@@ -186,7 +183,6 @@ public ResultMap addResultMap(
186183
id = applyCurrentNamespace(id, false);
187184
extend = applyCurrentNamespace(extend, true);
188185

189-
ResultMap.Builder resultMapBuilder = new ResultMap.Builder(configuration, id, type, resultMappings, autoMapping);
190186
if (extend != null) {
191187
if (!configuration.hasResultMap(extend)) {
192188
throw new IncompleteElementException("Could not find a parent resultmap with id '" + extend + "'");
@@ -212,8 +208,9 @@ public ResultMap addResultMap(
212208
}
213209
resultMappings.addAll(extendedResultMappings);
214210
}
215-
resultMapBuilder.discriminator(discriminator);
216-
ResultMap resultMap = resultMapBuilder.build();
211+
ResultMap resultMap = new ResultMap.Builder(configuration, id, type, resultMappings, autoMapping)
212+
.discriminator(discriminator)
213+
.build();
217214
configuration.addResultMap(resultMap);
218215
return resultMap;
219216
}
@@ -246,8 +243,7 @@ public Discriminator buildDiscriminator(
246243
resultMap = applyCurrentNamespace(resultMap, true);
247244
namespaceDiscriminatorMap.put(e.getKey(), resultMap);
248245
}
249-
Discriminator.Builder discriminatorBuilder = new Discriminator.Builder(configuration, resultMapping, namespaceDiscriminatorMap);
250-
return discriminatorBuilder.build();
246+
return new Discriminator.Builder(configuration, resultMapping, namespaceDiscriminatorMap).build();
251247
}
252248

253249
public MappedStatement addMappedStatement(
@@ -279,22 +275,28 @@ public MappedStatement addMappedStatement(
279275
id = applyCurrentNamespace(id, false);
280276
boolean isSelect = sqlCommandType == SqlCommandType.SELECT;
281277

282-
MappedStatement.Builder statementBuilder = new MappedStatement.Builder(configuration, id, sqlSource, sqlCommandType);
283-
statementBuilder.resource(resource);
284-
statementBuilder.fetchSize(fetchSize);
285-
statementBuilder.timeout(timeout);
286-
statementBuilder.statementType(statementType);
287-
statementBuilder.keyGenerator(keyGenerator);
288-
statementBuilder.keyProperty(keyProperty);
289-
statementBuilder.keyColumn(keyColumn);
290-
statementBuilder.databaseId(databaseId);
291-
statementBuilder.lang(lang);
292-
statementBuilder.resultOrdered(resultOrdered);
293-
statementBuilder.resulSets(resultSets);
294-
295-
setStatementParameterMap(parameterMap, parameterType, statementBuilder);
296-
setStatementResultMap(resultMap, resultType, resultSetType, statementBuilder);
297-
setStatementCache(isSelect, flushCache, useCache, currentCache, statementBuilder);
278+
MappedStatement.Builder statementBuilder = new MappedStatement.Builder(configuration, id, sqlSource, sqlCommandType)
279+
.resource(resource)
280+
.fetchSize(fetchSize)
281+
.timeout(timeout)
282+
.statementType(statementType)
283+
.keyGenerator(keyGenerator)
284+
.keyProperty(keyProperty)
285+
.keyColumn(keyColumn)
286+
.databaseId(databaseId)
287+
.lang(lang)
288+
.resultOrdered(resultOrdered)
289+
.resulSets(resultSets)
290+
.resultMaps(getStatementResultMaps(resultMap, resultType, id))
291+
.resultSetType(resultSetType)
292+
.flushCacheRequired(valueOrDefault(flushCache, !isSelect))
293+
.useCache(valueOrDefault(useCache, isSelect))
294+
.cache(currentCache);
295+
296+
ParameterMap statementParameterMap = getStatementParameterMap(parameterMap, parameterType, id);
297+
if (statementParameterMap != null) {
298+
statementBuilder.parameterMap(statementParameterMap);
299+
}
298300

299301
MappedStatement statement = statementBuilder.build();
300302
configuration.addMappedStatement(statement);
@@ -305,47 +307,33 @@ private <T> T valueOrDefault(T value, T defaultValue) {
305307
return value == null ? defaultValue : value;
306308
}
307309

308-
private void setStatementCache(
309-
boolean isSelect,
310-
boolean flushCache,
311-
boolean useCache,
312-
Cache cache,
313-
MappedStatement.Builder statementBuilder) {
314-
flushCache = valueOrDefault(flushCache, !isSelect);
315-
useCache = valueOrDefault(useCache, isSelect);
316-
statementBuilder.flushCacheRequired(flushCache);
317-
statementBuilder.useCache(useCache);
318-
statementBuilder.cache(cache);
319-
}
320-
321-
private void setStatementParameterMap(
322-
String parameterMap,
310+
private ParameterMap getStatementParameterMap(
311+
String parameterMapName,
323312
Class<?> parameterTypeClass,
324-
MappedStatement.Builder statementBuilder) {
325-
parameterMap = applyCurrentNamespace(parameterMap, true);
326-
327-
if (parameterMap != null) {
313+
String statementId) {
314+
parameterMapName = applyCurrentNamespace(parameterMapName, true);
315+
ParameterMap parameterMap = null;
316+
if (parameterMapName != null) {
328317
try {
329-
statementBuilder.parameterMap(configuration.getParameterMap(parameterMap));
318+
parameterMap = configuration.getParameterMap(parameterMapName);
330319
} catch (IllegalArgumentException e) {
331-
throw new IncompleteElementException("Could not find parameter map " + parameterMap, e);
320+
throw new IncompleteElementException("Could not find parameter map " + parameterMapName, e);
332321
}
333322
} else if (parameterTypeClass != null) {
334323
List<ParameterMapping> parameterMappings = new ArrayList<ParameterMapping>();
335-
ParameterMap.Builder inlineParameterMapBuilder = new ParameterMap.Builder(
324+
parameterMap = new ParameterMap.Builder(
336325
configuration,
337-
statementBuilder.id() + "-Inline",
326+
statementId + "-Inline",
338327
parameterTypeClass,
339-
parameterMappings);
340-
statementBuilder.parameterMap(inlineParameterMapBuilder.build());
328+
parameterMappings).build();
341329
}
330+
return parameterMap;
342331
}
343332

344-
private void setStatementResultMap(
333+
private List<ResultMap> getStatementResultMaps(
345334
String resultMap,
346335
Class<?> resultType,
347-
ResultSetType resultSetType,
348-
MappedStatement.Builder statementBuilder) {
336+
String statementId) {
349337
resultMap = applyCurrentNamespace(resultMap, true);
350338

351339
List<ResultMap> resultMaps = new ArrayList<ResultMap>();
@@ -359,17 +347,15 @@ private void setStatementResultMap(
359347
}
360348
}
361349
} else if (resultType != null) {
362-
ResultMap.Builder inlineResultMapBuilder = new ResultMap.Builder(
350+
ResultMap inlineResultMap = new ResultMap.Builder(
363351
configuration,
364-
statementBuilder.id() + "-Inline",
352+
statementId + "-Inline",
365353
resultType,
366354
new ArrayList<ResultMapping>(),
367-
null);
368-
resultMaps.add(inlineResultMapBuilder.build());
355+
null).build();
356+
resultMaps.add(inlineResultMap);
369357
}
370-
statementBuilder.resultMaps(resultMaps);
371-
372-
statementBuilder.resultSetType(resultSetType);
358+
return resultMaps;
373359
}
374360

375361
public ResultMapping buildResultMapping(
@@ -393,19 +379,19 @@ public ResultMapping buildResultMapping(
393379
if (composites.size() > 0) {
394380
column = null;
395381
}
396-
ResultMapping.Builder builder = new ResultMapping.Builder(configuration, property, column, javaTypeClass);
397-
builder.jdbcType(jdbcType);
398-
builder.nestedQueryId(applyCurrentNamespace(nestedSelect, true));
399-
builder.nestedResultMapId(applyCurrentNamespace(nestedResultMap, true));
400-
builder.resultSet(resultSet);
401-
builder.typeHandler(typeHandlerInstance);
402-
builder.flags(flags == null ? new ArrayList<ResultFlag>() : flags);
403-
builder.composites(composites);
404-
builder.notNullColumns(parseMultipleColumnNames(notNullColumn));
405-
builder.columnPrefix(columnPrefix);
406-
builder.foreignColumn(foreignColumn);
407-
builder.lazy(lazy);
408-
return builder.build();
382+
return new ResultMapping.Builder(configuration, property, column, javaTypeClass)
383+
.jdbcType(jdbcType)
384+
.nestedQueryId(applyCurrentNamespace(nestedSelect, true))
385+
.nestedResultMapId(applyCurrentNamespace(nestedResultMap, true))
386+
.resultSet(resultSet)
387+
.typeHandler(typeHandlerInstance)
388+
.flags(flags == null ? new ArrayList<ResultFlag>() : flags)
389+
.composites(composites)
390+
.notNullColumns(parseMultipleColumnNames(notNullColumn))
391+
.columnPrefix(columnPrefix)
392+
.foreignColumn(foreignColumn)
393+
.lazy(lazy)
394+
.build();
409395
}
410396

411397
private Set<String> parseMultipleColumnNames(String columnName) {
@@ -431,8 +417,9 @@ private List<ResultMapping> parseCompositeColumnName(String columnName) {
431417
while (parser.hasMoreTokens()) {
432418
String property = parser.nextToken();
433419
String column = parser.nextToken();
434-
ResultMapping.Builder complexBuilder = new ResultMapping.Builder(configuration, property, column, configuration.getTypeHandlerRegistry().getUnknownTypeHandler());
435-
composites.add(complexBuilder.build());
420+
ResultMapping complexResultMapping = new ResultMapping.Builder(
421+
configuration, property, column, configuration.getTypeHandlerRegistry().getUnknownTypeHandler()).build();
422+
composites.add(complexResultMapping);
436423
}
437424
}
438425
return composites;

0 commit comments

Comments
 (0)