//
protected Object getRowValue(ResultSet rs, ResultMap resultMap, CacheKey rowKey) throws SQLException {
if (globalRowValueCache.containsKey(rowKey)) {
final Object resultObject = globalRowValueCache.get(rowKey);
final MetaObject metaObject = configuration.newMetaObject(resultObject);
applyNestedResultMappings(rs, resultMap, metaObject);
return resultObject;
} else {
final List<String> mappedColumnNames = new ArrayList<String>();
final List<String> unmappedColumnNames = new ArrayList<String>();
final ResultLoaderMap lazyLoader = instantiateResultLoaderMap();
Object resultObject = createResultObject(rs, resultMap, lazyLoader);
if (resultObject != null && !typeHandlerRegistry.hasTypeHandler(resultMap.getType())) {
final MetaObject metaObject = configuration.newMetaObject(resultObject);
loadMappedAndUnmappedColumnNames(rs, resultMap, mappedColumnNames, unmappedColumnNames);
boolean foundValues = resultMap.getConstructorResultMappings().size() > 0;
if (AutoMappingBehavior.FULL.equals(configuration.getAutoMappingBehavior())) {
foundValues = applyAutomaticMappings(rs, unmappedColumnNames, metaObject) || foundValues;
}