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/03/01 02:56:16 UTC
svn commit: r748950 - in /ibatis/trunk/java/ibatis-3/ibatis-3-core/src:
main/java/org/apache/ibatis/binding/MapperAnnotationParser.java
test/java/org/apache/ibatis/binding/BindingTest.java
test/java/org/apache/ibatis/binding/BoundBlogMapper.java
Author: cbegin
Date: Sun Mar 1 01:56:16 2009
New Revision: 748950
URL: http://svn.apache.org/viewvc?rev=748950&view=rev
Log:
Fixed detection of collection type parameter for result type.
Modified:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/binding/MapperAnnotationParser.java
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/binding/BindingTest.java
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/binding/BoundBlogMapper.java
Modified: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/binding/MapperAnnotationParser.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/binding/MapperAnnotationParser.java?rev=748950&r1=748949&r2=748950&view=diff
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/binding/MapperAnnotationParser.java (original)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/binding/MapperAnnotationParser.java Sun Mar 1 01:56:16 2009
@@ -9,8 +9,7 @@
import org.apache.ibatis.type.JdbcType;
import java.lang.annotation.Annotation;
-import java.lang.reflect.Method;
-import java.lang.reflect.TypeVariable;
+import java.lang.reflect.*;
import java.util.ArrayList;
import java.util.Collection;
@@ -114,10 +113,16 @@
private Class getReturnType(Method method) {
Class returnType = method.getReturnType();
- if (returnType.isAssignableFrom(Collection.class)) {
- TypeVariable<? extends Class<?>>[] returnTypeVariables = returnType.getTypeParameters();
- if (returnTypeVariables.length == 1) {
- returnType = returnTypeVariables[0].getGenericDeclaration();
+ if (Collection.class.isAssignableFrom(returnType)) {
+ Type returnTypeParameter = method.getGenericReturnType();
+ if (returnTypeParameter instanceof ParameterizedType) {
+ Type[] actualTypeArguments = ((ParameterizedType) returnTypeParameter).getActualTypeArguments();
+ if (actualTypeArguments != null && actualTypeArguments.length == 1) {
+ returnTypeParameter = actualTypeArguments[0];
+ if (returnTypeParameter instanceof Class) {
+ returnType = (Class) returnTypeParameter;
+ }
+ }
}
}
return returnType;
Modified: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/binding/BindingTest.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/binding/BindingTest.java?rev=748950&r1=748949&r2=748950&view=diff
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/binding/BindingTest.java (original)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/binding/BindingTest.java Sun Mar 1 01:56:16 2009
@@ -28,7 +28,19 @@
} finally {
session.close();
}
+ }
+ @Test
+ public void shouldExecuteBoundSelectListOfBlogsAsMaps() {
+ SqlSession session = sqlSessionFactory.openSession();
+ try {
+ BoundBlogMapper mapper = session.getMapper(BoundBlogMapper.class);
+ List<Map> blogs = mapper.selectBlogsAsMaps();
+ assertEquals(2,blogs.size());
+ System.out.println(blogs);
+ } finally {
+ session.close();
+ }
}
@Test
Modified: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/binding/BoundBlogMapper.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/binding/BoundBlogMapper.java?rev=748950&r1=748949&r2=748950&view=diff
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/binding/BoundBlogMapper.java (original)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/binding/BoundBlogMapper.java Sun Mar 1 01:56:16 2009
@@ -14,6 +14,12 @@
})
List<Blog> selectBlogs();
+ @Select({
+ "SELECT *",
+ "FROM blog"
+ })
+ List<Map> selectBlogsAsMaps();
+
@Select("SELECT * FROM " +
"blog WHERE id = #{id}")
Blog selectBlog(int id);