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/01/11 07:46:27 UTC

svn commit: r733421 - in /ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java: log4j.properties org/apache/ibatis/api/SqlSessionTest.java org/apache/ibatis/parser/BlogMapper.xml

Author: cbegin
Date: Sat Jan 10 22:46:27 2009
New Revision: 733421

URL: http://svn.apache.org/viewvc?rev=733421&view=rev
Log:
improved join test and added depth and breadth to the outer join set

Modified:
    ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/log4j.properties
    ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/api/SqlSessionTest.java
    ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/parser/BlogMapper.xml

Modified: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/log4j.properties
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/log4j.properties?rev=733421&r1=733420&r2=733421&view=diff
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/log4j.properties (original)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/log4j.properties Sat Jan 10 22:46:27 2009
@@ -2,9 +2,9 @@
 log4j.rootLogger=DEBUG, stdout
 
 ### Uncomment ALL for iBATIS logging
-log4j.logger.org.apache.ibatis=ERROR
+log4j.logger.org.apache.ibatis=DEBUG
 
-log4j.logger.java.sql=ERROR
+log4j.logger.java.sql=DEBUG
 
 ### For Testing
 log4j.logger.java.lang.Object=DEBUG

Modified: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/api/SqlSessionTest.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/api/SqlSessionTest.java?rev=733421&r1=733420&r2=733421&view=diff
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/api/SqlSessionTest.java (original)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/api/SqlSessionTest.java Sat Jan 10 22:46:27 2009
@@ -8,17 +8,18 @@
 import java.io.Reader;
 import java.util.List;
 
-import domain.blog.Author;
-import domain.blog.Section;
-import domain.blog.ImmutableAuthor;
-import domain.blog.Blog;
+import domain.blog.*;
+
+import javax.sql.DataSource;
 
 public class SqlSessionTest extends BaseDataTest {
   private static SqlSessionFactory sqlMapper;
 
+  private static DataSource blogDataSource;
+
   @BeforeClass
   public static void setup() throws Exception {
-    createBlogDataSource();
+    blogDataSource = createBlogDataSource();
     final String resource = "org/apache/ibatis/parser/MapperConfig.xml";
     final Reader reader = Resources.getResourceAsReader(resource);
     sqlMapper = new SqlSessionFactoryBuilder().build(reader);
@@ -196,10 +197,23 @@
     try {
       Blog blog = (Blog) session.selectOne("com.domain.BlogMapper.selectBlogJoinedWithPostsAndAuthor", 1);
       Assert.assertEquals("Jim Business", blog.getTitle());
-      Assert.assertEquals(2, blog.getPosts().size());
-      Assert.assertEquals("Corn nuts",blog.getPosts().get(0).getSubject());
-      Assert.assertEquals(101,blog.getAuthor().getId());
-      Assert.assertEquals("jim",blog.getAuthor().getUsername());
+
+      final Author author = blog.getAuthor();
+      Assert.assertEquals(101, author.getId());
+      Assert.assertEquals("jim",author.getUsername());
+
+      final List<Post> posts = blog.getPosts();
+      Assert.assertEquals(2, posts.size());
+
+      final Post post = blog.getPosts().get(0);
+      Assert.assertEquals(1, post.getId());
+      Assert.assertEquals("Corn nuts", post.getSubject());
+
+      final List<Comment> comments = post.getComments();
+      Assert.assertEquals(1, comments.size());
+
+      final Comment comment = comments.get(0);
+      Assert.assertEquals(1, comment.getId());
     } finally {
       session.close();
     }

Modified: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/parser/BlogMapper.xml
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/parser/BlogMapper.xml?rev=733421&r1=733420&r2=733421&view=diff
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/parser/BlogMapper.xml (original)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/parser/BlogMapper.xml Sat Jan 10 22:46:27 2009
@@ -22,30 +22,67 @@
   </select>
 
   <resultMap id="joinedAuthor" type="domain.blog.Author">
-    <id column="id" property="id" />
-    <result property="username" column="username" />
-    <result property="password" column="password" />
-    <result property="email" column="email" />
-    <result property="bio" column="bio" />
-    <result property="favouriteSection" column="favourite_section" />
+    <id property="id" column="author_id" />
+    <result property="username" column="author_username" />
+    <result property="password" column="author_password" />
+    <result property="email" column="author_email" />
+    <result property="bio" column="author_bio" />
+    <result property="favouriteSection" column="author_favourite_section" />
   </resultMap>
 
-  <resultMap id="joinedPost" type="domain.blog.Post">
-    <id column="id" property="id" />
+  <resultMap id="joinedComment" type="domain.blog.Comment">
+    <id property="id" column="comment_id" />
+  </resultMap>
+
+  <resultMap id="joinedTag" type="domain.blog.Tag">
+    <id property="id" column="tag_id" />
   </resultMap>
 
+  <resultMap id="joinedPost" type="domain.blog.Post">
+    <id property="id" column="post_id" />
+    <result property="subject" column="post_subject"/>
+    <association property="author" column="post_author_id" resultMap="joinedAuthor"/>
+    <collection property="comments" column="post_id" resultMap="joinedComment"/>
+    <collection property="tags" column="post_id" resultMap="joinedTag"/>
+  </resultMap>
 
   <resultMap id="blogJoinedWithPostsAndAuthor" type="Blog">
-    <id property="id" column="id" />
-    <result property="title" column="title" />
-    <association property="author" column="author_id" resultMap="selectAuthorWithInlineParams"/>
-    <collection property="posts" column="id" resultMap="joinedPost" />
+    <id property="id" column="blog_id" />
+    <result property="title" column="blog_title"/>
+    <association property="author" column="blog_author_id" resultMap="joinedAuthor"/>
+    <collection property="posts" resultMap="joinedPost" />
   </resultMap>
 
-  <select id="selectBlogJoinedWithPostsAndAuthor" parameterType="int" resultMap="blogWithPosts">
-    select * from Blog B
-    inner join Post P on B.id = P.blog_id
-    inner join Author A on B.author_id = A.id
+  <select id="selectBlogJoinedWithPostsAndAuthor" parameterType="int" resultMap="blogJoinedWithPostsAndAuthor">
+    select
+      B.id as blog_id,
+      B.title as blog_title,
+      B.author_id as blog_author_id,
+      A.id as author_id,
+      A.username as author_username,
+      A.password as author_password,
+      A.email as author_email,
+      A.bio as author_bio,
+      A.favourite_section as author_favourite_section,
+      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.body as post_body,
+      C.id as comment_id,
+      C.post_id as comment_post_id,
+      C.name as comment_name,
+      C.comment as comment_text,
+      T.id as tag_id,
+      T.name as tag_name
+    from Blog B
+    left outer join Author A on B.author_id = A.id
+    left outer join Post P on B.id = P.blog_id
+    left outer join Comment C on P.id = C.post_id
+    left outer join Post_Tag PT on PT.post_id = P.id
+    left outer join Tag T on PT.tag_id = T.id
     where B.id = #{id}
   </select>