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>