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>