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/27 04:52:02 UTC
svn commit: r748384 - in /ibatis/trunk/java/ibatis-3/ibatis-3-core/src:
main/java/org/apache/ibatis/binding/ main/java/org/apache/ibatis/parser/
test/java/org/apache/ibatis/binding/ test/java/org/apache/ibatis/parser/
Author: cbegin
Date: Fri Feb 27 03:52:01 2009
New Revision: 748384
URL: http://svn.apache.org/viewvc?rev=748384&view=rev
Log:
In the middle of correcting constructor mapping support
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/main/java/org/apache/ibatis/parser/MapperConfigurator.java
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/binding/BoundAuthorMapper.java
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/parser/AuthorMapper.xml
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=748384&r1=748383&r2=748384&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 Fri Feb 27 03:52:01 2009
@@ -1,7 +1,10 @@
package org.apache.ibatis.binding;
import static org.apache.ibatis.annotations.Annotations.*;
-import org.apache.ibatis.mapping.*;
+import org.apache.ibatis.mapping.Configuration;
+import org.apache.ibatis.mapping.ResultFlag;
+import org.apache.ibatis.mapping.ResultSetType;
+import org.apache.ibatis.mapping.StatementType;
import org.apache.ibatis.parser.MapperConfigurator;
import org.apache.ibatis.type.JdbcType;
@@ -29,7 +32,6 @@
parseCacheRef();
Method[] methods = type.getMethods();
for (Method method : methods) {
- parseConstructor(method);
parseResults(method);
parseStatement(method);
}
@@ -50,48 +52,13 @@
}
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()) {
- ArrayList<ResultFlag> flags = new ArrayList<ResultFlag>();
- if (result.id()) flags.add(ResultFlag.ID);
- 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(),
- flags);
- }
- configurator.resultMapEnd();
- hasResults = true;
- }
- }
-
- public void parseConstructor(Method method) {
ConstructorArgs args = method.getAnnotation(ConstructorArgs.class);
- if (args != null) {
+ Results results = method.getAnnotation(Results.class);
+ if (results != null || args != null) {
String resultMapId = type.getName() + "." + method.getName();
- configurator.resultMapStart(resultMapId,getReturnType(method),null);
- for (Arg arg : args.value()) {
- ArrayList<ResultFlag> flags = new ArrayList<ResultFlag>();
- flags.add(ResultFlag.CONSTRUCTOR);
- if (arg.id()) flags.add(ResultFlag.ID);
- configurator.resultMapping(
- null,
- arg.column(),
- arg.javaType() == void.class ? null : arg.javaType(),
- arg.jdbcType() == JdbcType.UNDEFINED ? null : arg.jdbcType(),
- null,
- null,
- arg.typeHandler() == void.class ? null : arg.typeHandler(),
- flags); }
- configurator.resultMapEnd();
- hasResults = true;
+ configurator.resultMapStart(resultMapId, getReturnType(method), null);
+ applyConstructorArgs(args);
+ applyResults(results);
}
}
@@ -184,5 +151,43 @@
return null;
}
+ private void applyResults(Results results) {
+ if (results != null) {
+ for (Result result : results.value()) {
+ ArrayList<ResultFlag> flags = new ArrayList<ResultFlag>();
+ if (result.id()) flags.add(ResultFlag.ID);
+ 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(),
+ flags);
+ }
+ hasResults = true;
+ }
+ }
+
+ private void applyConstructorArgs(ConstructorArgs args) {
+ if (args != null) {
+ for (Arg arg : args.value()) {
+ ArrayList<ResultFlag> flags = new ArrayList<ResultFlag>();
+ flags.add(ResultFlag.CONSTRUCTOR);
+ if (arg.id()) flags.add(ResultFlag.ID);
+ configurator.resultMapping(
+ null,
+ arg.column(),
+ arg.javaType() == void.class ? null : arg.javaType(),
+ arg.jdbcType() == JdbcType.UNDEFINED ? null : arg.jdbcType(),
+ null,
+ null,
+ arg.typeHandler() == void.class ? null : arg.typeHandler(),
+ flags);
+ }
+ hasResults = true;
+ }
+ }
}
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=748384&r1=748383&r2=748384&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 Fri Feb 27 03:52:01 2009
@@ -332,7 +332,7 @@
}
private Class resolveResultJavaType(Class resultType, String property, Class javaType) {
- if (javaType == null) {
+ if (javaType == null && property != null) {
MetaClass metaResultType = MetaClass.forClass(resultType);
javaType = metaResultType.getSetterType(property);
}
Modified: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/binding/BoundAuthorMapper.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/binding/BoundAuthorMapper.java?rev=748384&r1=748383&r2=748384&view=diff
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/binding/BoundAuthorMapper.java (original)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/binding/BoundAuthorMapper.java Fri Feb 27 03:52:01 2009
@@ -5,11 +5,11 @@
public interface BoundAuthorMapper {
-// @ConstructorArgs({
-// @Arg(column = "AUTHOR_ID")
-// })
+ @ConstructorArgs({
+ @Arg(column = "AUTHOR_ID",javaType = int.class)
+ })
@Results({
- @Result(property="id",column = "AUTHOR_ID"),
+// @Result(property="id",column = "AUTHOR_ID"),
@Result(property = "username",column = "AUTHOR_USERNAME"),
@Result(property = "password",column = "AUTHOR_PASSWORD"),
@Result(property = "email",column = "AUTHOR_EMAIL"),
Modified: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/parser/AuthorMapper.xml
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/parser/AuthorMapper.xml?rev=748384&r1=748383&r2=748384&view=diff
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/parser/AuthorMapper.xml (original)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/parser/AuthorMapper.xml Fri Feb 27 03:52:01 2009
@@ -22,12 +22,12 @@
<resultMap id="selectImmutableAuthor" type="domain.blog.ImmutableAuthor">
<constructor>
- <id column="id" property="id"/>
- <result property="username" column="username"/>
- <result property="password" column="password"/>
- <result property="email" column="email"/>
- <result property="bio" column="bio"/>
- <result property="favouriteSection" column="favourite_section"/>
+ <id column="id" javaType="int"/>
+ <result column="username" javaType="string"/>
+ <result column="password" javaType="string"/>
+ <result column="email" javaType="string"/>
+ <result column="bio" javaType="string"/>
+ <result column="favourite_section" javaType="domain.blog.Section"/>
</constructor>
</resultMap>