### Question:
DefaultResultSetHandler implements ResultSetHandler { @Override public List<Object> handleResultSets(Statement stmt) throws SQLException { ErrorContext.instance().activity("handling results").object(mappedStatement.getId()); final List<Object> multipleResults = new ArrayList<Object>(); int resultSetCount = 0; ResultSetWrapper rsw = getFirstResultSet(stmt); List<ResultMap> resultMaps = mappedStatement.getResultMaps(); int resultMapCount = resultMaps.size(); validateResultMapsCount(rsw, resultMapCount); while (rsw != null && resultMapCount > resultSetCount) { ResultMap resultMap = resultMaps.get(resultSetCount); handleResultSet(rsw, resultMap, multipleResults, null); rsw = getNextResultSet(stmt); cleanUpAfterHandlingResultSet(); resultSetCount++; } String[] resultSets = mappedStatement.getResultSets(); if (resultSets != null) { while (rsw != null && resultSetCount < resultSets.length) { ResultMapping parentMapping = nextResultMaps.get(resultSets[resultSetCount]); if (parentMapping != null) { String nestedResultMapId = parentMapping.getNestedResultMapId(); ResultMap resultMap = configuration.getResultMap(nestedResultMapId); handleResultSet(rsw, resultMap, null, parentMapping); } rsw = getNextResultSet(stmt); cleanUpAfterHandlingResultSet(); resultSetCount++; } } return collapseSingleResultList(multipleResults); } DefaultResultSetHandler(Executor executor, MappedStatement mappedStatement, ParameterHandler parameterHandler, ResultHandler<?> resultHandler, BoundSql boundSql,
                                 RowBounds rowBounds); @Override void handleOutputParameters(CallableStatement cs); @Override List<Object> handleResultSets(Statement stmt); @Override Cursor<E> handleCursorResultSets(Statement stmt); void handleRowValues(ResultSetWrapper rsw, ResultMap resultMap, ResultHandler<?> resultHandler, RowBounds rowBounds, ResultMapping parentMapping); ResultMap resolveDiscriminatedResultMap(ResultSet rs, ResultMap resultMap, String columnPrefix);  }### Answer:
@Test public void shouldRetainColumnNameCase() throws Exception { final MappedStatement ms = getMappedStatement(); final Executor executor = null; final ParameterHandler parameterHandler = null; final ResultHandler resultHandler = null; final BoundSql boundSql = null; final RowBounds rowBounds = new RowBounds(0, 100); final DefaultResultSetHandler fastResultSetHandler = new DefaultResultSetHandler(executor, ms, parameterHandler, resultHandler, boundSql, rowBounds); when(stmt.getResultSet()).thenReturn(rs); when(rs.getMetaData()).thenReturn(rsmd); when(rs.getType()).thenReturn(ResultSet.TYPE_FORWARD_ONLY); when(rs.next()).thenReturn(true).thenReturn(false); when(rs.getInt("CoLuMn1")).thenReturn(100); when(rs.wasNull()).thenReturn(false); when(rsmd.getColumnCount()).thenReturn(1); when(rsmd.getColumnLabel(1)).thenReturn("CoLuMn1"); when(rsmd.getColumnType(1)).thenReturn(Types.INTEGER); when(rsmd.getColumnClassName(1)).thenReturn(Integer.class.getCanonicalName()); when(stmt.getConnection()).thenReturn(conn); when(conn.getMetaData()).thenReturn(dbmd); when(dbmd.supportsMultipleResultSets()).thenReturn(false); final List<Object> results = fastResultSetHandler.handleResultSets(stmt); assertEquals(1, results.size()); assertEquals(Integer.valueOf(100), ((HashMap) results.get(0)).get("cOlUmN1")); }