Author: jgbutler
Date: Sun Jun 28 22:02:35 2009
New Revision: 789162

URL: http://svn.apache.org/viewvc?rev=789162&view=rev
Log:
More forEach tests

Added:
    
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/nested/
    
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/nested/CreateDB.sql
    
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/nested/MapperConfig.xml
    
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/nested/Name.java
    
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/nested/NestedForEach.xml
    
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/nested/NestedForEachTest.java
    
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/nested/Parameter.java

Added: 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/nested/CreateDB.sql
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/nested/CreateDB.sql?rev=789162&view=auto
==============================================================================
--- 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/nested/CreateDB.sql
 (added)
+++ 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/nested/CreateDB.sql
 Sun Jun 28 22:02:35 2009
@@ -0,0 +1,12 @@
+create table names (
+  id int,
+  firstName varchar(20),
+  lastName varchar(20)
+);
+
+insert into names (id, firstName, lastName) values(1, 'Fred', 'Flintstone');
+insert into names (id, firstName, lastName) values(2, 'Wilma', 'Flintstone');
+insert into names (id, firstName, lastName) values(3, 'Pebbles', 'Flintstone');
+insert into names (id, firstName, lastName) values(4, 'Barney', 'Rubble');
+insert into names (id, firstName, lastName) values(5, 'Betty', 'Rubble');
+insert into names (id, firstName, lastName) values(6, 'Bamm Bamm', 'Rubble');

Added: 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/nested/MapperConfig.xml
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/nested/MapperConfig.xml?rev=789162&view=auto
==============================================================================
--- 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/nested/MapperConfig.xml
 (added)
+++ 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/nested/MapperConfig.xml
 Sun Jun 28 22:02:35 2009
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE configuration
+    PUBLIC "-//ibatis.apache.org//DTD Config 3.0//EN"
+    "http://ibatis.apache.org/dtd/ibatis-3-config.dtd";>
+<configuration>
+
+  <typeAliases>
+    <typeAlias alias="Parameter" 
type="org.apache.ibatis.submitted.nested.Parameter"/>
+  </typeAliases>
+  
+  <environments default="development">
+    <environment id="development">
+      <transactionManager type="JDBC">
+        <property name="" value=""/>
+      </transactionManager>
+      <dataSource type="UNPOOLED">
+        <property name="driver" value="org.hsqldb.jdbcDriver"/>
+        <property name="url" value="jdbc:hsqldb:mem:aname"/>
+        <property name="username" value="sa"/>
+      </dataSource>
+    </environment>
+  </environments>
+
+  <mappers>
+    <mapper resource="org/apache/ibatis/submitted/nested/NestedForEach.xml" />
+  </mappers>
+
+</configuration>

Added: 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/nested/Name.java
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/nested/Name.java?rev=789162&view=auto
==============================================================================
--- 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/nested/Name.java
 (added)
+++ 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/nested/Name.java
 Sun Jun 28 22:02:35 2009
@@ -0,0 +1,24 @@
+package org.apache.ibatis.submitted.nested;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class Name {
+    private String lastName;
+    private List<String> firstNames;
+    public Name() {
+        firstNames = new ArrayList<String>();
+    }
+    public String getLastName() {
+        return lastName;
+    }
+    public void setLastName(String lastName) {
+        this.lastName = lastName;
+    }
+    public List<String> getFirstNames() {
+        return firstNames;
+    }
+    public void addFirstName(String firstName) {
+        firstNames.add(firstName);
+    }
+}

Added: 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/nested/NestedForEach.xml
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/nested/NestedForEach.xml?rev=789162&view=auto
==============================================================================
--- 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/nested/NestedForEach.xml
 (added)
+++ 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/nested/NestedForEach.xml
 Sun Jun 28 22:02:35 2009
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN" 
"http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd";>
+<mapper namespace="org.apache.ibatis.submitted.nested">
+  <select id="simpleSelect" parameterType="Parameter" resultType="map">
+    select *
+    from names
+    <where>
+      <foreach collection="names" item="name" separator="or">
+        lastName = #{name.lastName}
+      </foreach>
+    </where>
+  </select>
+
+  <select id="nestedSelect" parameterType="Parameter" resultType="map">
+    select *
+    from names
+    <where>
+      <foreach collection="names" item="name">
+        <foreach collection="name.firstNames" item="firstName" separator="or">
+          (lastName = #{name.lastName} and firstName = #{firstName})
+        </foreach>
+      </foreach>
+    </where>
+  </select>
+</mapper>

Added: 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/nested/NestedForEachTest.java
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/nested/NestedForEachTest.java?rev=789162&view=auto
==============================================================================
--- 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/nested/NestedForEachTest.java
 (added)
+++ 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/nested/NestedForEachTest.java
 Sun Jun 28 22:02:35 2009
@@ -0,0 +1,92 @@
+package org.apache.ibatis.submitted.nested;
+
+import static org.junit.Assert.assertEquals;
+
+import java.io.PrintWriter;
+import java.io.Reader;
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.ibatis.io.Resources;
+import org.apache.ibatis.jdbc.ScriptRunner;
+import org.apache.ibatis.session.SqlSession;
+import org.apache.ibatis.session.SqlSessionFactory;
+import org.apache.ibatis.session.SqlSessionFactoryBuilder;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+public class NestedForEachTest {
+
+    protected static SqlSessionFactory sqlSessionFactory;
+
+    @BeforeClass
+    public static void setUp() throws Exception {
+        Connection conn = null;
+
+        try {
+            Class.forName("org.hsqldb.jdbcDriver");
+            conn = DriverManager.getConnection("jdbc:hsqldb:mem:aname", "sa",
+                    "");
+
+            Reader reader = 
Resources.getResourceAsReader("org/apache/ibatis/submitted/nested/CreateDB.sql");
+
+            ScriptRunner runner = new ScriptRunner(conn);
+            runner.setLogWriter(null);
+            runner.setErrorLogWriter(new PrintWriter(System.err));
+            runner.runScript(reader);
+            conn.commit();
+            reader.close();
+
+            reader = 
Resources.getResourceAsReader("org/apache/ibatis/submitted/nested/MapperConfig.xml");
+            sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
+            reader.close();
+        } finally {
+            if (conn != null) {
+                conn.close();
+            }
+        }
+    }
+
+    @Test
+    @SuppressWarnings("unchecked")
+    public void testSimpleSelect() {
+        SqlSession sqlSession = sqlSessionFactory.openSession();
+        try {
+            Name name = new Name();
+            name.setLastName("Flintstone");
+            Parameter parameter = new Parameter();
+            parameter.addName(name);
+            
+            List<Map<String, Object>> answer =
+                
sqlSession.selectList("org.apache.ibatis.submitted.nested.simpleSelect", 
parameter);
+            
+            assertEquals(3, answer.size());
+        } finally {
+            sqlSession.close();
+        }
+    }
+
+    @Test
+    @SuppressWarnings("unchecked")
+    public void testNestedSelect() {
+        SqlSession sqlSession = sqlSessionFactory.openSession();
+        try {
+            Name name = new Name();
+            name.setLastName("Flintstone");
+            name.addFirstName("Fred");
+            name.addFirstName("Wilma");
+            
+            Parameter parameter = new Parameter();
+            parameter.addName(name);
+            
+            List<Map<String, Object>> answer =
+                
sqlSession.selectList("org.apache.ibatis.submitted.nested.nestedSelect", 
parameter);
+            
+            assertEquals(2, answer.size());
+        } finally {
+            sqlSession.close();
+        }
+    }
+}

Added: 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/nested/Parameter.java
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/nested/Parameter.java?rev=789162&view=auto
==============================================================================
--- 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/nested/Parameter.java
 (added)
+++ 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/nested/Parameter.java
 Sun Jun 28 22:02:35 2009
@@ -0,0 +1,17 @@
+package org.apache.ibatis.submitted.nested;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class Parameter {
+    private List<Name> names;
+    public Parameter() {
+        names = new ArrayList<Name>();
+    }
+    public List<Name> getNames() {
+        return names;
+    }
+    public void addName(Name name) {
+        names.add(name);
+    }
+}


Reply via email to