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/26 05:40:49 UTC
svn commit: r748013 - in
/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis:
annotations/Annotations.java binding/MapperAnnotationParser.java
mapping/ResultMapping.java parser/MapperConfigurator.java
Author: cbegin
Date: Thu Feb 26 04:40:48 2009
New Revision: 748013
URL: http://svn.apache.org/viewvc?rev=748013&view=rev
Log:
Added @Results annotation support
Modified:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/annotations/Annotations.java
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/main/java/org/apache/ibatis/mapping/ResultMapping.java
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/MapperConfigurator.java
Modified: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/annotations/Annotations.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/annotations/Annotations.java?rev=748013&r1=748012&r2=748013&view=diff
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/annotations/Annotations.java (original)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/annotations/Annotations.java Thu Feb 26 04:40:48 2009
@@ -21,9 +21,9 @@
public static @interface Arg {
boolean id() default false;
String column() default "";
- Class javaType() default Class.class;
+ Class javaType() default void.class;
JdbcType jdbcType() default JdbcType.UNDEFINED;
- Class typeHandler() default Class.class;
+ Class typeHandler() default void.class;
}
@Retention(RetentionPolicy.RUNTIME)
@@ -38,9 +38,9 @@
boolean key() default false;
String column() default "";
String property() default "";
- Class javaType() default Class.class;
+ Class javaType() default void.class;
JdbcType jdbcType() default JdbcType.UNDEFINED;
- Class typeHandler() default Class.class;
+ Class typeHandler() default void.class;
String collectionSelect() default "";
Results collectionResults() default @Results;
String associationSelect() default "";
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=748013&r1=748012&r2=748013&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 Thu Feb 26 04:40:48 2009
@@ -3,16 +3,21 @@
import static org.apache.ibatis.annotations.Annotations.*;
import org.apache.ibatis.mapping.*;
import org.apache.ibatis.parser.MapperConfigurator;
+import org.apache.ibatis.type.TypeHandler;
+import org.apache.ibatis.type.JdbcType;
+import java.lang.annotation.Annotation;
import java.lang.reflect.Method;
import java.lang.reflect.TypeVariable;
-import java.lang.annotation.Annotation;
+import java.util.ArrayList;
import java.util.Collection;
+import java.util.List;
public class MapperAnnotationParser {
private MapperConfigurator configurator;
private Class type;
+ private boolean hasResults;
public MapperAnnotationParser(Configuration config, Class type) {
String resource = type.getName().replace('.', '/') + ".java (best guess)";
@@ -22,24 +27,47 @@
public void parse() {
configurator.namespace(type.getName());
- parseCache(type, configurator);
- parseCacheRef(type, configurator);
+ parseCache();
+ parseCacheRef();
Method[] methods = type.getMethods();
for (Method method : methods) {
+ parseResults(method);
parseStatement(method);
}
}
- private void parseCache(Class type, MapperConfigurator mapperConfigurator) {
+
+ private void parseCache() {
CacheDomain cacheDomain = (CacheDomain) type.getAnnotation(CacheDomain.class);
if (cacheDomain != null) {
- mapperConfigurator.cache(cacheDomain.implementation(), cacheDomain.eviction(), cacheDomain.flushInterval(), cacheDomain.size(), !cacheDomain.readWrite(), null);
+ configurator.cache(cacheDomain.implementation(), cacheDomain.eviction(), cacheDomain.flushInterval(), cacheDomain.size(), !cacheDomain.readWrite(), null);
}
}
- private void parseCacheRef(Class type, MapperConfigurator mapperConfigurator) {
+ private void parseCacheRef() {
CacheDomainRef cacheDomainRef = (CacheDomainRef) type.getAnnotation(CacheDomainRef.class);
if (cacheDomainRef != null) {
- mapperConfigurator.cacheRef(cacheDomainRef.value().getName());
+ configurator.cacheRef(cacheDomainRef.value().getName());
+ }
+ }
+
+ private void parseResults(Method method) {
+ Results results = method.getAnnotation(Results.class);
+ if (results != null) {
+ String resultMapId = type.getName() + "." + method.getName();
+ configurator.resultMapStart(resultMapId,getReturnType(method),null);
+ for (Result result : results.value()) {
+ configurator.resultMapping(
+ result.property(),
+ result.column(),
+ result.javaType() == void.class ? null : result.javaType(),
+ result.jdbcType() == JdbcType.UNDEFINED ? null : result.jdbcType(),
+ null,
+ null,
+ result.typeHandler() == void.class ? null : result.typeHandler(),
+ null);
+ }
+ configurator.resultMapEnd();
+ hasResults = true;
}
}
@@ -71,7 +99,7 @@
timeout,
null, // ParameterMapID
getParameterType(method),
- null, // ResultMapID
+ hasResults ? mappedStatementId : null, // ResultMapID
getReturnType(method),
resultSetType,
isSelect, // IsSelectStatement
Modified: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/mapping/ResultMapping.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/mapping/ResultMapping.java?rev=748013&r1=748012&r2=748013&view=diff
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/mapping/ResultMapping.java (original)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/mapping/ResultMapping.java Thu Feb 26 04:40:48 2009
@@ -3,6 +3,7 @@
import org.apache.ibatis.type.JdbcType;
import org.apache.ibatis.type.TypeHandler;
import org.apache.ibatis.type.TypeHandlerRegistry;
+import org.apache.derby.impl.sql.compile.SQLParser;
import java.util.ArrayList;
import java.util.Collections;
@@ -105,6 +106,10 @@
}
}
+ public Builder column(String column) {
+ resultMapping.column = column;
+ return this;
+ }
}
public String getProperty() {
Modified: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/MapperConfigurator.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/MapperConfigurator.java?rev=748013&r1=748012&r2=748013&view=diff
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/MapperConfigurator.java (original)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/MapperConfigurator.java Thu Feb 26 04:40:48 2009
@@ -326,7 +326,7 @@
builder.nestedQueryId(applyNamespace(nestedSelect));
builder.nestedResultMapId(applyNamespace(nestedResultMap));
builder.typeHandler(typeHandlerInstance);
- builder.flags(flags);
+ builder.flags(flags == null ? new ArrayList<ResultFlag>() : flags);
return builder.build();
}