Author: cbegin
Date: Sun May 10 02:52:31 2009
New Revision: 773295

URL: http://svn.apache.org/viewvc?rev=773295&view=rev
Log:
Added first dynamic SQL XML tests

Modified:
    
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/xml/XMLStatementParser.java
    
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/xml/dynamic/DynamicSqlSource.java
    
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/xml/dynamic/PrefixSqlNode.java
    
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/builder/MapperConfig.xml
    
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/builder/PostMapper.xml
    
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/session/SqlSessionTest.java

Modified: 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/xml/XMLStatementParser.java
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/xml/XMLStatementParser.java?rev=773295&r1=773294&r2=773295&view=diff
==============================================================================
--- 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/xml/XMLStatementParser.java
 (original)
+++ 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/xml/XMLStatementParser.java
 Sun May 10 02:52:31 2009
@@ -183,8 +183,8 @@
       List<SqlNode> otherwiseSqlNodes = new ArrayList<SqlNode>();
       handleWhenOtherwiseNodes(nodeToHandle, whenSqlNodes, otherwiseSqlNodes);
       SqlNode defaultSqlNode = getDefaultSqlNode(otherwiseSqlNodes);
-      ChooseSqlNode forEachSqlNode = new ChooseSqlNode((List<IfSqlNode>) 
whenSqlNodes, defaultSqlNode);
-      targetContents.add(forEachSqlNode);
+      ChooseSqlNode chooseSqlNode = new ChooseSqlNode((List<IfSqlNode>) 
whenSqlNodes, defaultSqlNode);
+      targetContents.add(chooseSqlNode);
     }
     private void handleWhenOtherwiseNodes(NodeletContext chooseSqlNode, List 
ifSqlNodes, List<SqlNode> defaultSqlNodes) {
       List<NodeletContext> children = chooseSqlNode.getChildren();

Modified: 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/xml/dynamic/DynamicSqlSource.java
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/xml/dynamic/DynamicSqlSource.java?rev=773295&r1=773294&r2=773295&view=diff
==============================================================================
--- 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/xml/dynamic/DynamicSqlSource.java
 (original)
+++ 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/xml/dynamic/DynamicSqlSource.java
 Sun May 10 02:52:31 2009
@@ -18,7 +18,9 @@
     rootSqlNode.apply(context);
     SqlSourceParser sqlSourceParser = new SqlSourceParser(configuration);
     SqlSource sqlSource = sqlSourceParser.parse(context.getSql());
-    return sqlSource.getBoundSql(parameterObject);
+    BoundSql boundSql = sqlSource.getBoundSql(parameterObject);
+    System.out.println(boundSql.getSql());
+    return boundSql;
   }
 
 }

Modified: 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/xml/dynamic/PrefixSqlNode.java
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/xml/dynamic/PrefixSqlNode.java?rev=773295&r1=773294&r2=773295&view=diff
==============================================================================
--- 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/xml/dynamic/PrefixSqlNode.java
 (original)
+++ 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/xml/dynamic/PrefixSqlNode.java
 Sun May 10 02:52:31 2009
@@ -32,12 +32,12 @@
 
   private class FilteredDynamicContext extends DynamicContext {
     private DynamicContext delegate;
-    private boolean filtered;
+    private boolean prefixApplied;
 
     public FilteredDynamicContext(DynamicContext delegate) {
       super(null);
       this.delegate = delegate;
-      this.filtered = false;
+      this.prefixApplied = false;
     }
 
     public Map<String, Object> getBindings() {
@@ -49,8 +49,7 @@
     }
 
     public void appendSql(String sql) {
-      if (!filtered) {
-        filtered = true;
+      if (!prefixApplied) {
         String filteredSql = sql.trim().toUpperCase();
         for (String toRemove : stringsToOverride) {
           if (filteredSql.startsWith(toRemove)) {
@@ -58,10 +57,13 @@
             break;
           }
         }
-        if (stringToPrefixWith != null) {
-          delegate.appendSql(stringToPrefixWith);
+        if (filteredSql.length() > 0) {
+          prefixApplied = true;
+          if (stringToPrefixWith != null) {
+            delegate.appendSql(stringToPrefixWith);
+          }
+          delegate.appendSql(sql);
         }
-        delegate.appendSql(sql);
       } else {
         delegate.appendSql(sql);
       }

Modified: 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/builder/MapperConfig.xml
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/builder/MapperConfig.xml?rev=773295&r1=773294&r2=773295&view=diff
==============================================================================
--- 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/builder/MapperConfig.xml
 (original)
+++ 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/builder/MapperConfig.xml
 Sun May 10 02:52:31 2009
@@ -63,6 +63,7 @@
     <mapper resource="org/apache/ibatis/builder/AuthorMapper.xml"/>
     <mapper resource="org/apache/ibatis/builder/BlogMapper.xml"/>
     <mapper resource="org/apache/ibatis/builder/CachedAuthorMapper.xml"/>
+    <mapper resource="org/apache/ibatis/builder/PostMapper.xml"/>
   </mappers>
 
 </configuration>

Modified: 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/builder/PostMapper.xml
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/builder/PostMapper.xml?rev=773295&r1=773294&r2=773295&view=diff
==============================================================================
--- 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/builder/PostMapper.xml
 (original)
+++ 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/builder/PostMapper.xml
 Sun May 10 02:52:31 2009
@@ -6,7 +6,23 @@
 
 <mapper namespace="domain.blog.mappers.PostMapper">
 
-  <select id="findPostIn" >
+  <select id="findPost" resultType="domain.blog.Post">
+    SELECT *
+    FROM POST P
+    <where>
+      <choose>
+        <when test="id != null">id = #{id}</when>
+      </choose>
+    </where>
   </select>
-
+  <!--
+    P.id as post_id,
+    P.blog_id as post_blog_id,
+    P.author_id as post_author_id,
+    P.created_on as post_created_on,
+    P.section as post_section,
+    P.subject as post_subject,
+    P.draft as draft,
+    P.body as post_body
+  -->
 </mapper>
\ No newline at end of file

Modified: 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/session/SqlSessionTest.java
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/session/SqlSessionTest.java?rev=773295&r1=773294&r2=773295&view=diff
==============================================================================
--- 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/session/SqlSessionTest.java
 (original)
+++ 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/session/SqlSessionTest.java
 Sun May 10 02:52:31 2009
@@ -405,4 +405,36 @@
     }
   }
 
+  @Test
+  public void shouldFindPostsAllPostsWithDynamicSql() throws Exception {
+    SqlSession session = sqlMapper.openSession();
+    try {
+      List<Post> posts = 
session.selectList("domain.blog.mappers.PostMapper.findPost");
+      printPosts(posts);
+      assertEquals(5,posts.size());
+    } finally {
+      session.close();
+    }
+  }
+
+  @Test
+  public void shouldFindPostByIDWithDynamicSql() throws Exception {
+    SqlSession session = sqlMapper.openSession();
+    try {
+      List<Post> posts = 
session.selectList("domain.blog.mappers.PostMapper.findPost",
+          new HashMap() {{
+            put("id",1);
+          }});
+      printPosts(posts);
+    } finally {
+      session.close();
+    }
+  }
+
+  private void printPosts(List<Post> posts) {
+    for(Post p : posts) {
+      System.out.println(p);
+    }
+  }
+
 }


Reply via email to