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();
}