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/15 01:34:09 UTC
svn commit: r754572 - in
/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis:
annotations/Annotations.java binding/MapperAnnotationParser.java
Author: cbegin
Date: Sun Mar 15 00:34:09 2009
New Revision: 754572
URL: http://svn.apache.org/viewvc?rev=754572&view=rev
Log:
Added support for nested select reference via One or Many
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
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=754572&r1=754571&r2=754572&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 Sun Mar 15 00:34:09 2009
@@ -81,25 +81,36 @@
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface Insert {
- String[] value();
+ String[] value() default {};
+ SqlProvider sqlProvider() default @SqlProvider(type = void.class, method = "");
}
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface Update {
- String[] value();
+ String[] value() default {};
+ SqlProvider sqlProvider() default @SqlProvider(type = void.class, method = "");
}
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface Delete {
- String[] value();
+ String[] value() default {};
+ SqlProvider sqlProvider() default @SqlProvider(type = void.class, method = "");
}
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface Select {
- String[] value();
+ String[] value() default {};
+ SqlProvider sqlProvider() default @SqlProvider(type = void.class, method = "");
+ }
+
+ @Retention(RetentionPolicy.RUNTIME)
+ @Target(ElementType.METHOD)
+ public @interface SqlProvider {
+ Class type();
+ String method();
}
@Retention(RetentionPolicy.RUNTIME)
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=754572&r1=754571&r2=754572&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 15 00:34:09 2009
@@ -193,7 +193,7 @@
result.column(),
result.javaType() == void.class ? null : result.javaType(),
result.jdbcType() == JdbcType.UNDEFINED ? null : result.jdbcType(),
- null,
+ hasNestedSelect(result) ? nestedSelectId(result) : null,
hasCollectionOrAssociation(result) ? nestedResultMapId(resultMapId, result) : null,
result.typeHandler() == void.class ? null : result.typeHandler(),
flags);
@@ -201,6 +201,22 @@
}
}
+ private String nestedSelectId(Result result) {
+ String nestedSelect = result.one().select();
+ if (nestedSelect.length() < 1) {
+ nestedSelect = result.many().select();
+ }
+ if (!nestedSelect.contains(".")) {
+ nestedSelect = type.getName() + "." + nestedSelect;
+ }
+ return nestedSelect;
+ }
+
+ private boolean hasNestedSelect(Result result) {
+ return result.one().select().length() > 0
+ || result.many().select().length() > 0;
+ }
+
private void applyConstructorArgs(Arg[] args) {
if (args.length > 0) {
for (Arg arg : args) {