Author: cbegin
Date: Sun Apr 18 01:07:48 2010
New Revision: 935286
URL: http://svn.apache.org/viewvc?rev=935286&view=rev
Log:
ibatis-776 Error if no resultType or resultMap provided in XML file, should
iBatis be able to infer resultType from mapper interface
Modified:
ibatis/java/ibatis-3/trunk/ (props changed)
ibatis/java/ibatis-3/trunk/src/main/java/org/apache/ibatis/executor/resultset/FastResultSetHandler.java
ibatis/java/ibatis-3/trunk/src/main/java/org/apache/ibatis/executor/resultset/NestedResultSetHandler.java
Propchange: ibatis/java/ibatis-3/trunk/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Sun Apr 18 01:07:48 2010
@@ -6,3 +6,5 @@ ibatis-3-core.iml
.project
*.ipr
*.iws
+
+ibatis-core.iml
Modified:
ibatis/java/ibatis-3/trunk/src/main/java/org/apache/ibatis/executor/resultset/FastResultSetHandler.java
URL:
http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/src/main/java/org/apache/ibatis/executor/resultset/FastResultSetHandler.java?rev=935286&r1=935285&r2=935286&view=diff
==============================================================================
---
ibatis/java/ibatis-3/trunk/src/main/java/org/apache/ibatis/executor/resultset/FastResultSetHandler.java
(original)
+++
ibatis/java/ibatis-3/trunk/src/main/java/org/apache/ibatis/executor/resultset/FastResultSetHandler.java
Sun Apr 18 01:07:48 2010
@@ -93,17 +93,32 @@ public class FastResultSetHandler implem
public List handleResultSets(Statement stmt) throws SQLException {
final List multipleResults = new ArrayList();
final List<ResultMap> resultMaps = mappedStatement.getResultMaps();
- int count = 0;
+ int resultMapCount = resultMaps.size();
+ int resultSetCount = 0;
ResultSet rs = stmt.getResultSet();
- while (rs != null && resultMaps.size() > count) {
- final ResultMap resultMap = resultMaps.get(count);
+ validateResultMapsCount(rs,resultMapCount);
+ while (rs != null && resultMapCount > resultSetCount) {
+ final ResultMap resultMap = resultMaps.get(resultSetCount);
handleResultSet(rs, resultMap, multipleResults);
rs = getNextResultSet(stmt);
- count++;
+ cleanUpAfterHandlingResultSet();
+ resultSetCount++;
}
return collapseSingleResultList(multipleResults);
}
+ protected void cleanUpAfterHandlingResultSet() {
+ }
+
+ protected void validateResultMapsCount(ResultSet rs, int resultMapCount) {
+ if (rs != null && resultMapCount < 1) {
+ throw new ExecutorException(
+ "A query was run and no Result Maps were found for the Mapped
Statement '"
+ + mappedStatement.getId()
+ + "'. It's likely that neither a Result Type nor a Result Map
was specified.");
+ }
+ }
+
protected void handleResultSet(ResultSet rs, ResultMap resultMap, List
multipleResults) throws SQLException {
if (resultHandler == null) {
DefaultResultHandler defaultResultHandler = new DefaultResultHandler();
Modified:
ibatis/java/ibatis-3/trunk/src/main/java/org/apache/ibatis/executor/resultset/NestedResultSetHandler.java
URL:
http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/src/main/java/org/apache/ibatis/executor/resultset/NestedResultSetHandler.java?rev=935286&r1=935285&r2=935286&view=diff
==============================================================================
---
ibatis/java/ibatis-3/trunk/src/main/java/org/apache/ibatis/executor/resultset/NestedResultSetHandler.java
(original)
+++
ibatis/java/ibatis-3/trunk/src/main/java/org/apache/ibatis/executor/resultset/NestedResultSetHandler.java
Sun Apr 18 01:07:48 2010
@@ -47,19 +47,9 @@ public class NestedResultSetHandler exte
// HANDLE RESULT SETS
//
- public List handleResultSets(Statement stmt) throws SQLException {
- final List multipleResults = new ArrayList();
- final List<ResultMap> resultMaps = mappedStatement.getResultMaps();
- int count = 0;
- ResultSet rs = stmt.getResultSet();
- while (rs != null) {
- final ResultMap resultMap = resultMaps.get(count);
- handleResultSet(rs, resultMap, multipleResults);
- rs = getNextResultSet(stmt);
- count++;
- globalRowValueCache.clear();
- }
- return collapseSingleResultList(multipleResults);
+ protected void cleanUpAfterHandlingResultSet() {
+ super.cleanUpAfterHandlingResultSet();
+ globalRowValueCache.clear();
}
//