You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ibatis.apache.org by cb...@apache.org on 2009/08/29 02:53:30 UTC

svn commit: r809079 - in /ibatis/java/ibatis-3/trunk/ibatis-3-core/src: main/java/org/apache/ibatis/exceptions/ main/java/org/apache/ibatis/session/defaults/ test/java/org/apache/ibatis/session/

Author: cbegin
Date: Sat Aug 29 00:53:29 2009
New Revision: 809079

URL: http://svn.apache.org/viewvc?rev=809079&view=rev
Log:
selectOne() now throws exception only on too many results, returns null on 0 results, or a single object otherwise

Added:
    ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/exceptions/TooManyResultsException.java
Modified:
    ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/session/defaults/DefaultSqlSession.java
    ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/session/SqlSessionTest.java

Added: ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/exceptions/TooManyResultsException.java
URL: http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/exceptions/TooManyResultsException.java?rev=809079&view=auto
==============================================================================
--- ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/exceptions/TooManyResultsException.java (added)
+++ ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/exceptions/TooManyResultsException.java Sat Aug 29 00:53:29 2009
@@ -0,0 +1,20 @@
+package org.apache.ibatis.exceptions;
+
+public class TooManyResultsException extends IbatisException {
+
+  public TooManyResultsException() {
+    super();
+  }
+
+  public TooManyResultsException(String message) {
+    super(message);
+  }
+
+  public TooManyResultsException(String message, Throwable cause) {
+    super(message, cause);
+  }
+
+  public TooManyResultsException(Throwable cause) {
+    super(cause);
+  }
+}

Modified: ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/session/defaults/DefaultSqlSession.java
URL: http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/session/defaults/DefaultSqlSession.java?rev=809079&r1=809078&r2=809079&view=diff
==============================================================================
--- ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/session/defaults/DefaultSqlSession.java (original)
+++ ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/session/defaults/DefaultSqlSession.java Sat Aug 29 00:53:29 2009
@@ -1,6 +1,7 @@
 package org.apache.ibatis.session.defaults;
 
 import org.apache.ibatis.exceptions.ExceptionFactory;
+import org.apache.ibatis.exceptions.TooManyResultsException;
 import org.apache.ibatis.executor.Executor;
 import org.apache.ibatis.executor.result.ResultHandler;
 import org.apache.ibatis.mapping.*;
@@ -29,11 +30,15 @@
   }
 
   public Object selectOne(String statement, Object parameter) {
+    // Popular vote was to return null on 0 results and throw exception on too many.
     List list = selectList(statement, parameter);
-    if (list.size() != 1) {
-      throw new SessionException("Expected one result to be returned by selectOne(), but found: " + list.size());
+    if (list.size() == 1) {
+      return list.get(0);
+    } else if (list.size() > 1) {
+      throw new TooManyResultsException("Expected one result (or null) to be returned by selectOne(), but found: " + list.size());
+    } else {
+      return null;
     }
-    return list.get(0);
   }
 
   public List selectList(String statement) {

Modified: ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/session/SqlSessionTest.java
URL: http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/session/SqlSessionTest.java?rev=809079&r1=809078&r2=809079&view=diff
==============================================================================
--- ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/session/SqlSessionTest.java (original)
+++ ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/session/SqlSessionTest.java Sat Aug 29 00:53:29 2009
@@ -395,12 +395,7 @@
       AuthorMapper mapper = session.getMapper(AuthorMapper.class);
       int count = mapper.deleteAuthor(101);
       assertEquals(1, count);
-      try {
-        mapper.selectAuthor(101);
-        fail("Expected exception.");
-      } catch (Exception e) {
-        assertEquals(SessionException.class, e.getClass());
-      }
+      assertNull(mapper.selectAuthor(101));
     } finally {
       session.close();
     }