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);
+ }
+ }
+
}