Author: cbegin
Date: Wed Oct  7 05:44:43 2009
New Revision: 822595

URL: http://svn.apache.org/viewvc?rev=822595&view=rev
Log:
Added Param annotation to name multiple parameters.

Added:
    
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/annotations/Param.java
Modified:
    
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/binding/MapperMethod.java
    
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/binding/BoundAuthorMapper.java
    
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/binding/BoundAuthorMapper.xml

Added: 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/annotations/Param.java
URL: 
http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/annotations/Param.java?rev=822595&view=auto
==============================================================================
--- 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/annotations/Param.java
 (added)
+++ 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/annotations/Param.java
 Wed Oct  7 05:44:43 2009
@@ -0,0 +1,12 @@
+package org.apache.ibatis.annotations;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+import java.lang.annotation.ElementType;
+
+...@retention(RetentionPolicy.RUNTIME)
+...@target(ElementType.PARAMETER)
+public @interface Param {
+  String value();
+}

Modified: 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/binding/MapperMethod.java
URL: 
http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/binding/MapperMethod.java?rev=822595&r1=822594&r2=822595&view=diff
==============================================================================
--- 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/binding/MapperMethod.java
 (original)
+++ 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/binding/MapperMethod.java
 Wed Oct  7 05:44:43 2009
@@ -3,6 +3,7 @@
 import org.apache.ibatis.executor.resultset.RowLimit;
 import org.apache.ibatis.mapping.*;
 import org.apache.ibatis.session.SqlSession;
+import org.apache.ibatis.annotations.Param;
 
 import java.lang.reflect.Method;
 import java.sql.SQLException;
@@ -106,13 +107,24 @@
       if (RowLimit.class.isAssignableFrom(argTypes[i])) {
         rowLimitIndex = i;
       } else {
-        final String paramName = String.valueOf(paramPositions.size());
+        String paramName = String.valueOf(paramPositions.size());
+        paramName = getParamNameFromAnnotation(i, paramName);
         paramNames.add(paramName);
         paramPositions.add(i);
       }
     }
   }
 
+  private String getParamNameFromAnnotation(int i, String paramName) {
+    Object[] paramAnnos = method.getParameterAnnotations()[i];
+    for (int j=0;j<paramAnnos.length;j++) {
+      if (paramAnnos[j] instanceof Param) {
+        paramName = ((Param)paramAnnos[j]).value();
+      }
+    }
+    return paramName;
+  }
+
   private void setupCommandType() {
     MappedStatement ms = config.getMappedStatement(commandName);
     type = ms.getSqlCommandType();

Modified: 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/binding/BoundAuthorMapper.java
URL: 
http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/binding/BoundAuthorMapper.java?rev=822595&r1=822594&r2=822595&view=diff
==============================================================================
--- 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/binding/BoundAuthorMapper.java
 (original)
+++ 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/binding/BoundAuthorMapper.java
 Wed Oct  7 05:44:43 2009
@@ -64,5 +64,8 @@
 
   //======================================================
 
-  List<Post> findThreeSpecificPosts(int one, RowLimit rowLimit, int two, int 
three);
+  List<Post> findThreeSpecificPosts(@Param("one") int one,
+                                    RowLimit rowLimit,
+                                    @Param("two") int two,
+                                    int three);
 }

Modified: 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/binding/BoundAuthorMapper.xml
URL: 
http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/binding/BoundAuthorMapper.xml?rev=822595&r1=822594&r2=822595&view=diff
==============================================================================
--- 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/binding/BoundAuthorMapper.xml
 (original)
+++ 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/binding/BoundAuthorMapper.xml
 Wed Oct  7 05:44:43 2009
@@ -28,7 +28,7 @@
 
   <select id="findThreeSpecificPosts" parameterType="map" 
resultType="domain.blog.Post">
     select * from post
-    where id in (#{0},#{1},#{2})
+    where id in (#{one},#{two},#{2})
   </select>
 
 


Reply via email to