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/02/15 18:09:12 UTC

svn commit: r744697 - in /ibatis/trunk/java/ibatis-3/ibatis-3-core/src: main/java/org/apache/ibatis/binding/ test/java/com/domain/ test/java/org/apache/ibatis/api/ test/java/org/apache/ibatis/parser/

Author: cbegin
Date: Sun Feb 15 17:09:12 2009
New Revision: 744697

URL: http://svn.apache.org/viewvc?rev=744697&view=rev
Log:
Added offset/limit tests for mapper binding.

Added:
    ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/com/domain/BlogMapper.java
Modified:
    ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/binding/MapperMethod.java
    ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/api/SqlSessionTest.java
    ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/parser/BlogMapper.xml

Modified: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/binding/MapperMethod.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/binding/MapperMethod.java?rev=744697&r1=744696&r2=744697&view=diff
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/binding/MapperMethod.java (original)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/binding/MapperMethod.java Sun Feb 15 17:09:12 2009
@@ -2,6 +2,7 @@
 
 import org.apache.ibatis.api.SqlSession;
 import org.apache.ibatis.mapping.Configuration;
+import org.apache.ibatis.executor.Executor;
 
 import java.lang.reflect.Method;
 import java.sql.SQLException;
@@ -67,6 +68,7 @@
     if (List.class.isAssignableFrom(method.getReturnType())) {
       returnsList = true;
       if (argCount == 2) {
+        hasListBounds = true;
       } else if (argCount == 3) {
         hasListBounds = true;
       }
@@ -100,9 +102,16 @@
     Object result;
     if (hasListBounds) {
       Object param = getParam(args);
-      int skip = ((Integer) args[1]);
-      int max = ((Integer) args[2]);
-      result = sqlSession.selectList(commandName, param, skip, max);
+      int offset = Executor.NO_ROW_OFFSET;
+      int limit = Executor.NO_ROW_LIMIT;
+      if (args.length == 3) {
+        offset = ((Integer) args[1]);
+        limit = ((Integer) args[2]);
+      } else if (args.length == 2) {
+        offset = ((Integer) args[0]);
+        limit = ((Integer) args[1]);
+      }
+      result = sqlSession.selectList(commandName, param, offset, limit);
     } else {
       Object param = getParam(args);
       result = sqlSession.selectList(commandName, param);
@@ -114,7 +123,7 @@
     if (args == null) {
       return null;
     }
-    return args.length > 0 ? args[0] : null;
+    return args.length == 1 || args.length == 3 ? args[0] : null;
   }
 
 }

Added: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/com/domain/BlogMapper.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/com/domain/BlogMapper.java?rev=744697&view=auto
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/com/domain/BlogMapper.java (added)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/com/domain/BlogMapper.java Sun Feb 15 17:09:12 2009
@@ -0,0 +1,12 @@
+package com.domain;
+
+import java.util.Map;
+import java.util.List;
+
+public interface BlogMapper {
+
+  List<Map> selectAllPosts(Object param);
+  List<Map> selectAllPosts(int offset, int limit);
+  List<Map> selectAllPosts(Object param, int offset, int limit);
+
+}

Modified: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/api/SqlSessionTest.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/api/SqlSessionTest.java?rev=744697&r1=744696&r2=744697&view=diff
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/api/SqlSessionTest.java (original)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/api/SqlSessionTest.java Sun Feb 15 17:09:12 2009
@@ -10,8 +10,10 @@
 
 import java.io.Reader;
 import java.util.List;
+import java.util.Map;
 
 import com.domain.AuthorMapper;
+import com.domain.BlogMapper;
 
 public class SqlSessionTest extends BaseDataTest {
   private static SqlSessionFactory sqlMapper;
@@ -340,7 +342,7 @@
     try {
       AuthorMapper mapper = session.getMapper(AuthorMapper.class);
       int count = mapper.deleteAuthor(101);
-      assertEquals(count, 1);
+      assertEquals(1, count);
       try{
         mapper.selectAuthor(101);
         fail("Expected exception.");
@@ -360,7 +362,7 @@
       Author expected = mapper.selectAuthor(101);
       expected.setUsername("NewUsername");
       int count = mapper.updateAuthor(expected);
-      assertEquals(count, 1);
+      assertEquals(1, count);
       Author actual = mapper.selectAuthor(101);
       assertEquals(expected.getUsername(), actual.getUsername());
     } finally {
@@ -368,4 +370,45 @@
     }
   }
 
+  @Test
+  public void shouldSelectAllPostsUsingMapperClass() throws Exception {
+    SqlSession session = sqlMapper.openSession();
+    try {
+      BlogMapper mapper = session.getMapper(BlogMapper.class);
+      List<Map> posts = mapper.selectAllPosts(null);
+      assertEquals(5, posts.size());
+    } finally {
+      session.close();
+    }
+  }
+
+  @Test
+  public void shouldLimitResultsUsingMapperClass() throws Exception {
+    SqlSession session = sqlMapper.openSession();
+    try {
+      BlogMapper mapper = session.getMapper(BlogMapper.class);
+      List<Map> posts = mapper.selectAllPosts(null,0,2);
+      assertEquals(2, posts.size());
+      assertEquals(1, posts.get(0).get("ID"));
+      assertEquals(2, posts.get(1).get("ID"));
+    } finally {
+      session.close();
+    }
+  }
+
+  @Test
+  public void shouldOffsetAndLimitResultsUsingMapperClass() throws Exception {
+    SqlSession session = sqlMapper.openSession();
+    try {
+      BlogMapper mapper = session.getMapper(BlogMapper.class);
+      List<Map> posts = mapper.selectAllPosts(2,3);
+      assertEquals(3, posts.size());
+      assertEquals(3, posts.get(0).get("ID"));
+      assertEquals(4, posts.get(1).get("ID"));
+      assertEquals(5, posts.get(2).get("ID"));
+    } finally {
+      session.close();
+    }
+  }
+
 }

Modified: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/parser/BlogMapper.xml
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/parser/BlogMapper.xml?rev=744697&r1=744696&r2=744697&view=diff
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/parser/BlogMapper.xml (original)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/parser/BlogMapper.xml Sun Feb 15 17:09:12 2009
@@ -93,4 +93,8 @@
   </select>
 
 
+  <select id="selectAllPosts" resultType="hashmap">
+    select * from post order by id
+  </select>
+
 </mapper>
\ No newline at end of file