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>


Reply via email to