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/08/29 02:29:57 UTC

svn commit: r809075 - in /ibatis/java/ibatis-3/trunk/ibatis-3-core/src: main/java/org/apache/ibatis/builder/SqlSourceBuilder.java test/java/org/apache/ibatis/binding/BoundAuthorMapper.xml test/java/org/apache/ibatis/submitted/complex_property/db/User.xml

Author: cbegin
Date: Sat Aug 29 00:29:56 2009
New Revision: 809075

URL: http://svn.apache.org/viewvc?rev=809075&view=rev
Log:
Re-introduced old iBATIS JDBC type specification alternative syntax ${firstName:VARCHAR} -- this was done for simplicity and because it is the most commonly required parameter modifier due to the requirement for specifying the JDBC type when setting NULL parameter values.

Modified:
    ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/builder/SqlSourceBuilder.java
    ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/binding/BoundAuthorMapper.xml
    ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/complex_property/db/User.xml

Modified: ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/builder/SqlSourceBuilder.java
URL: http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/builder/SqlSourceBuilder.java?rev=809075&r1=809074&r2=809075&view=diff
==============================================================================
--- ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/builder/SqlSourceBuilder.java (original)
+++ ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/builder/SqlSourceBuilder.java Sat Aug 29 00:29:56 2009
@@ -41,7 +41,9 @@
 
     private ParameterMapping buildParameterMapping(String content) {
       StringTokenizer parameterMappingParts = new StringTokenizer(content, ", ");
-      String property = parameterMappingParts.nextToken();
+      String propertyWithJdbcType = parameterMappingParts.nextToken();
+      String property = extractPropertyName(propertyWithJdbcType);
+      String jdbcType = extractJdbcType(propertyWithJdbcType);
       Class propertyType;
       MetaClass metaClass = MetaClass.forClass(parameterType);
       if (typeHandlerRegistry.hasTypeHandler(parameterType)) {
@@ -52,6 +54,9 @@
         propertyType = Object.class;
       }
       ParameterMapping.Builder builder = new ParameterMapping.Builder(configuration, property, propertyType);
+      if (jdbcType != null) {
+        builder.jdbcType(resolveJdbcType(jdbcType));
+      }
       while (parameterMappingParts.hasMoreTokens()) {
         String attribute = parameterMappingParts.nextToken();
         StringTokenizer attributeParts = new StringTokenizer(attribute, "=");
@@ -77,7 +82,27 @@
       }
       return builder.build();
     }
-  }
 
+    private String extractPropertyName(String property) {
+      if (property.contains(":")) {
+        StringTokenizer simpleJdbcTypeParser = new StringTokenizer(property,": ");
+        if (simpleJdbcTypeParser.countTokens() == 2) {
+          return simpleJdbcTypeParser.nextToken();
+        }
+      }
+      return property;
+    }
+
+    private String extractJdbcType(String property) {
+      if (property.contains(":")) {
+        StringTokenizer simpleJdbcTypeParser = new StringTokenizer(property,": ");
+        if (simpleJdbcTypeParser.countTokens() == 2) {
+          simpleJdbcTypeParser.nextToken();
+          return simpleJdbcTypeParser.nextToken();
+        }
+      }
+      return null;
+    }
 
+  }
 }

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=809075&r1=809074&r2=809075&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 Sat Aug 29 00:29:56 2009
@@ -12,7 +12,7 @@
     </selectKey>
     insert into Author (id,username,password,email,bio,favourite_section)
     values(
-      #{id}, #{username}, #{password}, #{email}, #{bio}, #{favouriteSection,jdbcType=VARCHAR}
+      #{id}, #{username}, #{password}, #{email}, #{bio}, #{favouriteSection:VARCHAR}
     )
   </insert>
 

Modified: ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/complex_property/db/User.xml
URL: http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/complex_property/db/User.xml?rev=809075&r1=809074&r2=809075&view=diff
==============================================================================
--- ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/complex_property/db/User.xml (original)
+++ ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/complex_property/db/User.xml Sat Aug 29 00:29:56 2009
@@ -10,7 +10,7 @@
 	</resultMap>
 
 	<select id="find" parameterType="long" resultMap="UserResult">
-		SELECT * FROM user WHERE id = #{id,jdbcType=BIGINT}
+		SELECT * FROM user WHERE id = #{id:BIGINT}
 	</select>
 
 	<select id="version" parameterType="long" resultType="int">
@@ -18,7 +18,7 @@
 	</select>
 
 	<delete id="delete" parameterType="UserAlias">
-		DELETE FROM user WHERE id = #{id,jdbcType=BIGINT}
+		DELETE FROM user WHERE id = #{id:BIGINT}
 	</delete>
 
 	<insert id="insert" parameterType="UserAlias" useGeneratedKeys="false">
@@ -31,7 +31,7 @@
 		VALUES 
 		( #{id},
 			#{username,jdbcType=VARCHAR}, 
-			#{password.encrypted,jdbcType=VARCHAR},
+			#{password.encrypted:VARCHAR},
             #{administrator,jdbcType=BIT}
 		)
 	</insert>