Author: cbegin
Date: Tue Sep 29 05:43:58 2009
New Revision: 819833

URL: http://svn.apache.org/viewvc?rev=819833&view=rev
Log:
Support single column mappings in primitive results

Modified:
    
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/resultset/DefaultResultSetHandler.java

Modified: 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/resultset/DefaultResultSetHandler.java
URL: 
http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/resultset/DefaultResultSetHandler.java?rev=819833&r1=819832&r2=819833&view=diff
==============================================================================
--- 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/resultset/DefaultResultSetHandler.java
 (original)
+++ 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/resultset/DefaultResultSetHandler.java
 Tue Sep 29 05:43:58 2009
@@ -288,7 +288,7 @@
     final Class resultType = resultMap.getType();
     final List<ResultMapping> constructorMappings = 
resultMap.getConstructorResultMappings();
     if (PlatformType.isPlatformType(resultType)) {
-      return createPrimitiveResultObject(rs, resultType);
+      return createPrimitiveResultObject(rs, resultMap);
     } else if (constructorMappings.size() > 0) {
       return createParameterizedResultObject(rs, resultType, 
constructorMappings);
     } else {
@@ -312,9 +312,17 @@
     return foundValues ? objectFactory.create(resultType, parameterTypes, 
parameterValues) : null;
   }
 
-  private Object createPrimitiveResultObject(ResultSet rs, Class resultType) 
throws SQLException {
-    final ResultSetMetaData rsmd = rs.getMetaData();
-    final String columnName = configuration.isUseColumnLabel() ? 
rsmd.getColumnLabel(1) : rsmd.getColumnName(1);
+  private Object createPrimitiveResultObject(ResultSet rs, ResultMap 
resultMap) throws SQLException {
+    final Class resultType = resultMap.getType();
+    final String columnName;
+    if (resultMap.getResultMappings().size() > 0) {
+      final List<ResultMapping> resultMappingList = 
resultMap.getResultMappings();
+      final ResultMapping mapping = resultMappingList.get(0);
+      columnName = mapping.getColumn();
+    } else {
+      final ResultSetMetaData rsmd = rs.getMetaData();
+      columnName = configuration.isUseColumnLabel() ? rsmd.getColumnLabel(1) : 
rsmd.getColumnName(1);
+    }
     final TypeHandler typeHandler = 
typeHandlerRegistry.getTypeHandler(resultType);
     return typeHandler.getResult(rs, columnName);
   }


Reply via email to