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 2008/08/08 01:21:58 UTC
svn commit: r683745 [8/22] - in /ibatis/trunk/java/ibatis-3: ./
ibatis-3-compat/ ibatis-3-compat/src/ ibatis-3-compat/src/main/
ibatis-3-compat/src/main/java/ ibatis-3-compat/src/main/java/com/
ibatis-3-compat/src/main/java/com/ibatis/ ibatis-3-compat/...
Added: ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/jpetstore/persistence/iface/AccountDao.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/jpetstore/persistence/iface/AccountDao.java?rev=683745&view=auto
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/jpetstore/persistence/iface/AccountDao.java (added)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/jpetstore/persistence/iface/AccountDao.java Thu Aug 7 16:21:46 2008
@@ -0,0 +1,15 @@
+package com.ibatis.jpetstore.persistence.iface;
+
+import com.ibatis.jpetstore.domain.Account;
+
+public interface AccountDao {
+
+ Account getAccount(String username);
+
+ Account getAccount(String username, String password);
+
+ void insertAccount(Account account);
+
+ void updateAccount(Account account);
+
+}
Added: ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/jpetstore/persistence/iface/CategoryDao.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/jpetstore/persistence/iface/CategoryDao.java?rev=683745&view=auto
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/jpetstore/persistence/iface/CategoryDao.java (added)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/jpetstore/persistence/iface/CategoryDao.java Thu Aug 7 16:21:46 2008
@@ -0,0 +1,13 @@
+package com.ibatis.jpetstore.persistence.iface;
+
+import com.ibatis.jpetstore.domain.Category;
+
+import java.util.List;
+
+public interface CategoryDao {
+
+ List getCategoryList();
+
+ Category getCategory(String categoryId);
+
+}
Added: ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/jpetstore/persistence/iface/ItemDao.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/jpetstore/persistence/iface/ItemDao.java?rev=683745&view=auto
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/jpetstore/persistence/iface/ItemDao.java (added)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/jpetstore/persistence/iface/ItemDao.java Thu Aug 7 16:21:46 2008
@@ -0,0 +1,16 @@
+package com.ibatis.jpetstore.persistence.iface;
+
+import com.ibatis.common.util.PaginatedList;
+import com.ibatis.jpetstore.domain.*;
+
+public interface ItemDao {
+
+ void updateAllQuantitiesFromOrder(Order order);
+
+ boolean isItemInStock(String itemId);
+
+ PaginatedList getItemListByProduct(String productId);
+
+ Item getItem(String itemId);
+
+}
Added: ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/jpetstore/persistence/iface/OrderDao.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/jpetstore/persistence/iface/OrderDao.java?rev=683745&view=auto
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/jpetstore/persistence/iface/OrderDao.java (added)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/jpetstore/persistence/iface/OrderDao.java Thu Aug 7 16:21:46 2008
@@ -0,0 +1,14 @@
+package com.ibatis.jpetstore.persistence.iface;
+
+import com.ibatis.common.util.PaginatedList;
+import com.ibatis.jpetstore.domain.Order;
+
+public interface OrderDao {
+
+ PaginatedList getOrdersByUsername(String username);
+
+ Order getOrder(int orderId);
+
+ void insertOrder(Order order);
+
+}
Added: ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/jpetstore/persistence/iface/ProductDao.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/jpetstore/persistence/iface/ProductDao.java?rev=683745&view=auto
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/jpetstore/persistence/iface/ProductDao.java (added)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/jpetstore/persistence/iface/ProductDao.java Thu Aug 7 16:21:46 2008
@@ -0,0 +1,14 @@
+package com.ibatis.jpetstore.persistence.iface;
+
+import com.ibatis.common.util.PaginatedList;
+import com.ibatis.jpetstore.domain.Product;
+
+public interface ProductDao {
+
+ PaginatedList getProductListByCategory(String categoryId);
+
+ Product getProduct(String productId);
+
+ PaginatedList searchProductList(String keywords);
+
+}
Added: ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/jpetstore/persistence/iface/SequenceDao.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/jpetstore/persistence/iface/SequenceDao.java?rev=683745&view=auto
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/jpetstore/persistence/iface/SequenceDao.java (added)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/jpetstore/persistence/iface/SequenceDao.java Thu Aug 7 16:21:46 2008
@@ -0,0 +1,7 @@
+package com.ibatis.jpetstore.persistence.iface;
+
+public interface SequenceDao {
+
+ int getNextId(String name);
+
+}
Added: ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/jpetstore/persistence/sqlmapdao/AccountSqlMapDao.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/jpetstore/persistence/sqlmapdao/AccountSqlMapDao.java?rev=683745&view=auto
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/jpetstore/persistence/sqlmapdao/AccountSqlMapDao.java (added)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/jpetstore/persistence/sqlmapdao/AccountSqlMapDao.java Thu Aug 7 16:21:46 2008
@@ -0,0 +1,40 @@
+package com.ibatis.jpetstore.persistence.sqlmapdao;
+
+import com.ibatis.dao.client.DaoManager;
+import com.ibatis.jpetstore.domain.Account;
+import com.ibatis.jpetstore.persistence.iface.AccountDao;
+
+public class AccountSqlMapDao extends BaseSqlMapDao implements AccountDao {
+
+ public AccountSqlMapDao(DaoManager daoManager) {
+ super(daoManager);
+ }
+
+ public Account getAccount(String username) {
+ return (Account) queryForObject("getAccountByUsername", username);
+ }
+
+ public Account getAccount(String username, String password) {
+ Account account = new Account();
+ account.setUsername(username);
+ account.setPassword(password);
+ return (Account) queryForObject("getAccountByUsernameAndPassword", account);
+ }
+
+ public void insertAccount(Account account) {
+ update("insertAccount", account);
+ update("insertProfile", account);
+ update("insertSignon", account);
+ }
+
+ public void updateAccount(Account account) {
+ update("updateAccount", account);
+ update("updateProfile", account);
+
+ if (account.getPassword() != null && account.getPassword().length() > 0) {
+ update("updateSignon", account);
+ }
+ }
+
+
+}
Added: ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/jpetstore/persistence/sqlmapdao/BaseSqlMapDao.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/jpetstore/persistence/sqlmapdao/BaseSqlMapDao.java?rev=683745&view=auto
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/jpetstore/persistence/sqlmapdao/BaseSqlMapDao.java (added)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/jpetstore/persistence/sqlmapdao/BaseSqlMapDao.java Thu Aug 7 16:21:46 2008
@@ -0,0 +1,14 @@
+package com.ibatis.jpetstore.persistence.sqlmapdao;
+
+import com.ibatis.dao.client.DaoManager;
+import com.ibatis.dao.client.template.SqlMapDaoTemplate;
+
+public class BaseSqlMapDao extends SqlMapDaoTemplate {
+
+ protected static final int PAGE_SIZE = 4;
+
+ public BaseSqlMapDao(DaoManager daoManager) {
+ super(daoManager);
+ }
+
+}
Added: ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/jpetstore/persistence/sqlmapdao/CategorySqlMapDao.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/jpetstore/persistence/sqlmapdao/CategorySqlMapDao.java?rev=683745&view=auto
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/jpetstore/persistence/sqlmapdao/CategorySqlMapDao.java (added)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/jpetstore/persistence/sqlmapdao/CategorySqlMapDao.java Thu Aug 7 16:21:46 2008
@@ -0,0 +1,23 @@
+package com.ibatis.jpetstore.persistence.sqlmapdao;
+
+import com.ibatis.dao.client.DaoManager;
+import com.ibatis.jpetstore.domain.Category;
+import com.ibatis.jpetstore.persistence.iface.CategoryDao;
+
+import java.util.List;
+
+public class CategorySqlMapDao extends BaseSqlMapDao implements CategoryDao {
+
+ public CategorySqlMapDao(DaoManager daoManager) {
+ super(daoManager);
+ }
+
+ public List getCategoryList() {
+ return queryForList("getCategoryList", null);
+ }
+
+ public Category getCategory(String categoryId) {
+ return (Category) queryForObject("getCategory", categoryId);
+ }
+
+}
Added: ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/jpetstore/persistence/sqlmapdao/ItemSqlMapDao.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/jpetstore/persistence/sqlmapdao/ItemSqlMapDao.java?rev=683745&view=auto
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/jpetstore/persistence/sqlmapdao/ItemSqlMapDao.java (added)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/jpetstore/persistence/sqlmapdao/ItemSqlMapDao.java Thu Aug 7 16:21:46 2008
@@ -0,0 +1,44 @@
+package com.ibatis.jpetstore.persistence.sqlmapdao;
+
+import com.ibatis.common.util.PaginatedList;
+import com.ibatis.dao.client.DaoManager;
+import com.ibatis.jpetstore.domain.*;
+import com.ibatis.jpetstore.persistence.iface.ItemDao;
+
+import java.util.*;
+
+public class ItemSqlMapDao extends BaseSqlMapDao implements ItemDao {
+
+ public ItemSqlMapDao(DaoManager daoManager) {
+ super(daoManager);
+ }
+
+ public void updateAllQuantitiesFromOrder(Order order) {
+ for (int i = 0; i < order.getLineItems().size(); i++) {
+ LineItem lineItem = (LineItem) order.getLineItems().get(i);
+ String itemId = lineItem.getItemId();
+ Integer increment = new Integer(lineItem.getQuantity());
+ Map param = new HashMap(2);
+ param.put("itemId", itemId);
+ param.put("increment", increment);
+ update("updateInventoryQuantity", param);
+ }
+ }
+
+ public boolean isItemInStock(String itemId) {
+ Integer i = (Integer) queryForObject("getInventoryQuantity", itemId);
+ return (i != null && i.intValue() > 0);
+ }
+
+ public PaginatedList getItemListByProduct(String productId) {
+ return queryForPaginatedList("getItemListByProduct", productId, PAGE_SIZE);
+ }
+
+ public Item getItem(String itemId) {
+ Integer i = (Integer) queryForObject("getInventoryQuantity", itemId);
+ Item item = (Item) queryForObject("getItem", itemId);
+ item.setQuantity(i.intValue());
+ return item;
+ }
+
+}
Added: ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/jpetstore/persistence/sqlmapdao/OrderSqlMapDao.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/jpetstore/persistence/sqlmapdao/OrderSqlMapDao.java?rev=683745&view=auto
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/jpetstore/persistence/sqlmapdao/OrderSqlMapDao.java (added)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/jpetstore/persistence/sqlmapdao/OrderSqlMapDao.java Thu Aug 7 16:21:46 2008
@@ -0,0 +1,36 @@
+package com.ibatis.jpetstore.persistence.sqlmapdao;
+
+import com.ibatis.common.util.PaginatedList;
+import com.ibatis.dao.client.DaoManager;
+import com.ibatis.jpetstore.domain.*;
+import com.ibatis.jpetstore.persistence.iface.OrderDao;
+
+public class OrderSqlMapDao extends BaseSqlMapDao implements OrderDao {
+
+ public OrderSqlMapDao(DaoManager daoManager) {
+ super(daoManager);
+ }
+
+ public PaginatedList getOrdersByUsername(String username) {
+ return queryForPaginatedList("getOrdersByUsername", username, 10);
+ }
+
+ public Order getOrder(int orderId) {
+ Order order = null;
+ Object parameterObject = new Integer(orderId);
+ order = (Order) queryForObject("getOrder", parameterObject);
+ order.setLineItems(queryForList("getLineItemsByOrderId", new Integer(order.getOrderId())));
+ return order;
+ }
+
+ public void insertOrder(Order order) {
+ insert("insertOrder", order);
+ insert("insertOrderStatus", order);
+ for (int i = 0; i < order.getLineItems().size(); i++) {
+ LineItem lineItem = (LineItem) order.getLineItems().get(i);
+ lineItem.setOrderId(order.getOrderId());
+ insert("insertLineItem", lineItem);
+ }
+ }
+
+}
Added: ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/jpetstore/persistence/sqlmapdao/ProductSqlMapDao.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/jpetstore/persistence/sqlmapdao/ProductSqlMapDao.java?rev=683745&view=auto
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/jpetstore/persistence/sqlmapdao/ProductSqlMapDao.java (added)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/jpetstore/persistence/sqlmapdao/ProductSqlMapDao.java Thu Aug 7 16:21:46 2008
@@ -0,0 +1,46 @@
+package com.ibatis.jpetstore.persistence.sqlmapdao;
+
+import com.ibatis.common.util.PaginatedList;
+import com.ibatis.dao.client.DaoManager;
+import com.ibatis.jpetstore.domain.Product;
+import com.ibatis.jpetstore.persistence.iface.ProductDao;
+
+import java.util.*;
+
+public class ProductSqlMapDao extends BaseSqlMapDao implements ProductDao {
+
+ public ProductSqlMapDao(DaoManager daoManager) {
+ super(daoManager);
+ }
+
+ public PaginatedList getProductListByCategory(String categoryId) {
+ return queryForPaginatedList("getProductListByCategory", categoryId, PAGE_SIZE);
+ }
+
+ public Product getProduct(String productId) {
+ return (Product) queryForObject("getProduct", productId);
+ }
+
+ public PaginatedList searchProductList(String keywords) {
+ Object parameterObject = new ProductSearch(keywords);
+ return queryForPaginatedList("searchProductList", parameterObject, PAGE_SIZE);
+ }
+
+ /* Inner Classes */
+
+ public static class ProductSearch {
+ private List keywordList = new ArrayList();
+
+ public ProductSearch(String keywords) {
+ StringTokenizer splitter = new StringTokenizer(keywords, " ", false);
+ while (splitter.hasMoreTokens()) {
+ keywordList.add("%" + splitter.nextToken() + "%");
+ }
+ }
+
+ public List getKeywordList() {
+ return keywordList;
+ }
+ }
+
+}
Added: ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/jpetstore/persistence/sqlmapdao/SequenceSqlMapDao.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/jpetstore/persistence/sqlmapdao/SequenceSqlMapDao.java?rev=683745&view=auto
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/jpetstore/persistence/sqlmapdao/SequenceSqlMapDao.java (added)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/jpetstore/persistence/sqlmapdao/SequenceSqlMapDao.java Thu Aug 7 16:21:46 2008
@@ -0,0 +1,36 @@
+package com.ibatis.jpetstore.persistence.sqlmapdao;
+
+import com.ibatis.dao.client.*;
+import com.ibatis.jpetstore.domain.Sequence;
+import com.ibatis.jpetstore.persistence.iface.SequenceDao;
+
+public class SequenceSqlMapDao extends BaseSqlMapDao implements SequenceDao {
+
+ public SequenceSqlMapDao(DaoManager daoManager) {
+ super(daoManager);
+ }
+
+ /**
+ * This is a generic sequence ID generator that is based on a database
+ * table called 'SEQUENCE', which contains two columns (NAME, NEXTID).
+ * <p/>
+ * This approach should work with any database.
+ *
+ * @param name The name of the sequence.
+ * @return The Next ID
+ * @
+ */
+ public synchronized int getNextId(String name) {
+ Sequence sequence = new Sequence(name, -1);
+
+ sequence = (Sequence) queryForObject("getSequence", sequence);
+ if (sequence == null) {
+ throw new DaoException("Error: A null sequence was returned from the database (could not get next " + name + " sequence).");
+ }
+ Object parameterObject = new Sequence(name, sequence.getNextId() + 1);
+ update("updateSequence", parameterObject);
+
+ return sequence.getNextId();
+ }
+
+}
Added: ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/jpetstore/persistence/sqlmapdao/sql/Account.xml
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/jpetstore/persistence/sqlmapdao/sql/Account.xml?rev=683745&view=auto
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/jpetstore/persistence/sqlmapdao/sql/Account.xml (added)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/jpetstore/persistence/sqlmapdao/sql/Account.xml Thu Aug 7 16:21:46 2008
@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
+ "http://ibatis.apache.org/dtd/sql-map-2.dtd">
+
+<sqlMap namespace="Account">
+
+ <typeAlias alias="account" type="com.ibatis.jpetstore.domain.Account"/>
+
+ <select id="getAccountByUsername" resultClass="account" parameterClass="string">
+ SELECT
+ SIGNON.USERNAME,
+ ACCOUNT.EMAIL,
+ ACCOUNT.FIRSTNAME,
+ ACCOUNT.LASTNAME,
+ ACCOUNT.STATUS,
+ ACCOUNT.ADDR1 AS address1,
+ ACCOUNT.ADDR2 AS address2,
+ ACCOUNT.CITY,
+ ACCOUNT.STATE,
+ ACCOUNT.ZIP,
+ ACCOUNT.COUNTRY,
+ ACCOUNT.PHONE,
+ PROFILE.LANGPREF AS languagePreference,
+ PROFILE.FAVCATEGORY AS favouriteCategoryId,
+ PROFILE.MYLISTOPT AS listOption,
+ PROFILE.BANNEROPT AS bannerOption,
+ BANNERDATA.BANNERNAME
+ FROM ACCOUNT, PROFILE, SIGNON, BANNERDATA
+ WHERE ACCOUNT.USERID = #username#
+ AND SIGNON.USERNAME = ACCOUNT.USERID
+ AND PROFILE.USERID = ACCOUNT.USERID
+ AND PROFILE.FAVCATEGORY = BANNERDATA.FAVCATEGORY
+ </select>
+
+ <select id="getAccountByUsernameAndPassword" resultClass="account" parameterClass="account">
+ SELECT
+ SIGNON.USERNAME,
+ ACCOUNT.EMAIL,
+ ACCOUNT.FIRSTNAME,
+ ACCOUNT.LASTNAME,
+ ACCOUNT.STATUS,
+ ACCOUNT.ADDR1 AS address1,
+ ACCOUNT.ADDR2 AS address2,
+ ACCOUNT.CITY,
+ ACCOUNT.STATE,
+ ACCOUNT.ZIP,
+ ACCOUNT.COUNTRY,
+ ACCOUNT.PHONE,
+ PROFILE.LANGPREF AS languagePreference,
+ PROFILE.FAVCATEGORY AS favouriteCategoryId,
+ PROFILE.MYLISTOPT AS listOption,
+ PROFILE.BANNEROPT AS bannerOption,
+ BANNERDATA.BANNERNAME
+ FROM ACCOUNT, PROFILE, SIGNON, BANNERDATA
+ WHERE ACCOUNT.USERID = #username#
+ AND SIGNON.PASSWORD = #password#
+ AND SIGNON.USERNAME = ACCOUNT.USERID
+ AND PROFILE.USERID = ACCOUNT.USERID
+ AND PROFILE.FAVCATEGORY = BANNERDATA.FAVCATEGORY
+ </select>
+
+ <update id="updateAccount" parameterClass="account">
+ UPDATE ACCOUNT SET
+ EMAIL = #email#,
+ FIRSTNAME = #firstName#,
+ LASTNAME = #lastName#,
+ STATUS = #status#,
+ ADDR1 = #address1#,
+ ADDR2 = #address2:VARCHAR#,
+ CITY = #city#,
+ STATE = #state#,
+ ZIP = #zip#,
+ COUNTRY = #country#,
+ PHONE = #phone#
+ WHERE USERID = #username#
+ </update>
+
+ <insert id="insertAccount" parameterClass="account">
+ INSERT INTO ACCOUNT
+ (EMAIL, FIRSTNAME, LASTNAME, STATUS, ADDR1, ADDR2, CITY, STATE, ZIP, COUNTRY, PHONE, USERID)
+ VALUES
+ (#email#, #firstName#, #lastName#, #status#, #address1#, #address2:VARCHAR#, #city#, #state#, #zip#, #country#,
+ #phone#, #username#)
+ </insert>
+
+ <update id="updateProfile" parameterClass="account">
+ UPDATE PROFILE SET
+ LANGPREF = #languagePreference#,
+ FAVCATEGORY = #favouriteCategoryId#,
+ MYLISTOPT = #listOption#,
+ BANNEROPT = #bannerOption#
+ WHERE USERID = #username#
+ </update>
+
+ <insert id="insertProfile" parameterClass="account">
+ INSERT INTO PROFILE (LANGPREF, FAVCATEGORY, MYLISTOPT, BANNEROPT, USERID)
+ VALUES (#languagePreference#, #favouriteCategoryId#, #listOption#, #bannerOption#, #username#)
+ </insert>
+
+ <update id="updateSignon" parameterClass="account">
+ UPDATE SIGNON SET PASSWORD = #password#
+ WHERE USERNAME = #username#
+ </update>
+
+ <insert id="insertSignon" parameterClass="account">
+ INSERT INTO SIGNON (PASSWORD,USERNAME)
+ VALUES (#password#, #username#)
+ </insert>
+
+</sqlMap>
Added: ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/jpetstore/persistence/sqlmapdao/sql/Category.xml
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/jpetstore/persistence/sqlmapdao/sql/Category.xml?rev=683745&view=auto
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/jpetstore/persistence/sqlmapdao/sql/Category.xml (added)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/jpetstore/persistence/sqlmapdao/sql/Category.xml Thu Aug 7 16:21:46 2008
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
+ "http://ibatis.apache.org/dtd/sql-map-2.dtd">
+
+<sqlMap namespace="Category">
+
+ <typeAlias alias="category" type="com.ibatis.jpetstore.domain.Category"/>
+
+ <cacheModel id="categoryCache" type="LRU">
+ <flushInterval hours="24"/>
+ <property name="size" value="100"/>
+ </cacheModel>
+
+ <select id="getCategory" resultClass="category" parameterClass="string" cacheModel="categoryCache">
+ SELECT
+ CATID AS categoryId,
+ NAME,
+ DESCN AS description
+ FROM CATEGORY
+ WHERE CATID = #categoryId#
+ </select>
+
+ <select id="getCategoryList" resultClass="category" cacheModel="categoryCache">
+ SELECT
+ CATID AS categoryId,
+ NAME,
+ DESCN AS description
+ FROM CATEGORY
+ </select>
+
+</sqlMap>
Added: ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/jpetstore/persistence/sqlmapdao/sql/Item.xml
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/jpetstore/persistence/sqlmapdao/sql/Item.xml?rev=683745&view=auto
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/jpetstore/persistence/sqlmapdao/sql/Item.xml (added)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/jpetstore/persistence/sqlmapdao/sql/Item.xml Thu Aug 7 16:21:46 2008
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
+ "http://ibatis.apache.org/dtd/sql-map-2.dtd">
+
+<sqlMap namespace="Item">
+
+ <typeAlias alias="item" type="com.ibatis.jpetstore.domain.Item"/>
+
+ <cacheModel id="itemCache" type="LRU">
+ <flushInterval hours="24"/>
+ <property name="size" value="100"/>
+ </cacheModel>
+
+ <cacheModel id="quantityCache" type="LRU">
+ <flushInterval hours="24"/>
+ <flushOnExecute statement="updateInventoryQuantity"/>
+ <property name="size" value="100"/>
+ </cacheModel>
+
+ <select id="getItemListByProduct" resultClass="item" parameterClass="string" cacheModel="itemCache">
+ SELECT
+ I.ITEMID,
+ LISTPRICE,
+ UNITCOST,
+ SUPPLIER AS supplierId,
+ I.PRODUCTID AS "product.productId",
+ NAME AS "product.name",
+ DESCN AS "product.description",
+ CATEGORY AS "product.categoryId",
+ STATUS,
+ ATTR1 AS attribute1,
+ ATTR2 AS attribute2,
+ ATTR3 AS attribute3,
+ ATTR4 AS attribute4,
+ ATTR5 AS attribute5
+ FROM ITEM I, PRODUCT P
+ WHERE P.PRODUCTID = I.PRODUCTID
+ AND I.PRODUCTID = #value#
+ </select>
+
+ <select id="getItem" resultClass="item" parameterClass="string" cacheModel="quantityCache">
+ select
+ I.ITEMID,
+ LISTPRICE,
+ UNITCOST,
+ SUPPLIER AS supplierId,
+ I.PRODUCTID AS "product.productId",
+ NAME AS "product.name",
+ DESCN AS "product.description",
+ CATEGORY AS "product.categoryId",
+ STATUS,
+ ATTR1 AS attribute1,
+ ATTR2 AS attribute2,
+ ATTR3 AS attribute3,
+ ATTR4 AS attribute4,
+ ATTR5 AS attribute5,
+ QTY AS quantity
+ from ITEM I, INVENTORY V, PRODUCT P
+ where P.PRODUCTID = I.PRODUCTID
+ and I.ITEMID = V.ITEMID
+ and I.ITEMID = #value#
+ </select>
+
+ <select id="getInventoryQuantity" resultClass="int" parameterClass="string">
+ SELECT QTY AS value
+ FROM INVENTORY
+ WHERE ITEMID = #itemId#
+ </select>
+
+ <update id="updateInventoryQuantity" parameterClass="map">
+ UPDATE INVENTORY SET
+ QTY = QTY - #increment#
+ WHERE ITEMID = #itemId#
+ </update>
+
+</sqlMap>
Added: ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/jpetstore/persistence/sqlmapdao/sql/LineItem.xml
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/jpetstore/persistence/sqlmapdao/sql/LineItem.xml?rev=683745&view=auto
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/jpetstore/persistence/sqlmapdao/sql/LineItem.xml (added)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/jpetstore/persistence/sqlmapdao/sql/LineItem.xml Thu Aug 7 16:21:46 2008
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
+ "http://ibatis.apache.org/dtd/sql-map-2.dtd">
+
+<sqlMap namespace="LineItem">
+
+ <typeAlias alias="lineItem" type="com.ibatis.jpetstore.domain.LineItem"/>
+
+ <select id="getLineItemsByOrderId" resultClass="lineItem" parameterClass="int">
+ SELECT
+ ORDERID,
+ LINENUM AS lineNumber,
+ ITEMID,
+ QUANTITY,
+ UNITPRICE
+ FROM LINEITEM
+ WHERE ORDERID = #orderId#
+ </select>
+
+ <insert id="insertLineItem" parameterClass="lineItem">
+ INSERT INTO LINEITEM (ORDERID, LINENUM, ITEMID, QUANTITY, UNITPRICE)
+ VALUES (#orderId#, #lineNumber#, #itemId#, #quantity#, #unitPrice#)
+ </insert>
+
+</sqlMap>
Added: ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/jpetstore/persistence/sqlmapdao/sql/Order.xml
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/jpetstore/persistence/sqlmapdao/sql/Order.xml?rev=683745&view=auto
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/jpetstore/persistence/sqlmapdao/sql/Order.xml (added)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/jpetstore/persistence/sqlmapdao/sql/Order.xml Thu Aug 7 16:21:46 2008
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
+ "http://ibatis.apache.org/dtd/sql-map-2.dtd">
+
+<sqlMap namespace="Order">
+
+ <typeAlias alias="order" type="com.ibatis.jpetstore.domain.Order"/>
+
+ <statement id="getOrder" resultClass="order" parameterClass="int">
+ select
+ BILLADDR1 AS billAddress1,
+ BILLADDR2 AS billAddress2,
+ BILLCITY,
+ BILLCOUNTRY,
+ BILLSTATE,
+ BILLTOFIRSTNAME,
+ BILLTOLASTNAME,
+ BILLZIP,
+ SHIPADDR1 AS shipAddress1,
+ SHIPADDR2 AS shipAddress2,
+ SHIPCITY,
+ SHIPCOUNTRY,
+ SHIPSTATE,
+ SHIPTOFIRSTNAME,
+ SHIPTOLASTNAME,
+ SHIPZIP,
+ CARDTYPE,
+ COURIER,
+ CREDITCARD,
+ EXPRDATE AS expiryDate,
+ LOCALE,
+ ORDERDATE,
+ ORDERS.ORDERID,
+ TOTALPRICE,
+ USERID AS username,
+ STATUS
+ FROM ORDERS, ORDERSTATUS
+ WHERE ORDERS.ORDERID = #orderId#
+ AND ORDERS.ORDERID = ORDERSTATUS.ORDERID
+ </statement>
+
+ <select id="getOrdersByUsername" resultClass="order" parameterClass="string">
+ SELECT
+ BILLADDR1 AS billAddress1,
+ BILLADDR2 AS billAddress2,
+ BILLCITY,
+ BILLCOUNTRY,
+ BILLSTATE,
+ BILLTOFIRSTNAME,
+ BILLTOLASTNAME,
+ BILLZIP,
+ SHIPADDR1 AS shipAddress1,
+ SHIPADDR2 AS shipAddress2,
+ SHIPCITY,
+ SHIPCOUNTRY,
+ SHIPSTATE,
+ SHIPTOFIRSTNAME,
+ SHIPTOLASTNAME,
+ SHIPZIP,
+ CARDTYPE,
+ COURIER,
+ CREDITCARD,
+ EXPRDATE AS expiryDate,
+ LOCALE,
+ ORDERDATE,
+ ORDERS.ORDERID,
+ TOTALPRICE,
+ USERID AS username,
+ STATUS
+ FROM ORDERS, ORDERSTATUS
+ WHERE ORDERS.USERID = #value#
+ AND ORDERS.ORDERID = ORDERSTATUS.ORDERID
+ ORDER BY ORDERDATE
+ </select>
+
+ <insert id="insertOrder" parameterClass="order">
+ INSERT INTO ORDERS (ORDERID, USERID, ORDERDATE, SHIPADDR1, SHIPADDR2, SHIPCITY, SHIPSTATE,
+ SHIPZIP, SHIPCOUNTRY, BILLADDR1, BILLADDR2, BILLCITY, BILLSTATE, BILLZIP, BILLCOUNTRY,
+ COURIER, TOTALPRICE, BILLTOFIRSTNAME, BILLTOLASTNAME, SHIPTOFIRSTNAME, SHIPTOLASTNAME,
+ CREDITCARD, EXPRDATE, CARDTYPE, LOCALE)
+ VALUES(#orderId#, #username#, #orderDate#, #shipAddress1#, #shipAddress2:VARCHAR#, #shipCity#,
+ #shipState#, #shipZip#, #shipCountry#, #billAddress1#, #billAddress2:VARCHAR#, #billCity#,
+ #billState#, #billZip#, #billCountry#, #courier#, #totalPrice#, #billToFirstName#, #billToLastName#,
+ #shipToFirstName#, #shipToLastName#, #creditCard#, #expiryDate#, #cardType#, #locale#)
+ </insert>
+
+ <insert id="insertOrderStatus" parameterClass="order">
+ INSERT INTO ORDERSTATUS (ORDERID, LINENUM, TIMESTAMP, STATUS)
+ VALUES (#orderId:NUMERIC#, #orderId:NUMERIC#, #orderDate:TIMESTAMP#, #status:VARCHAR#)
+ </insert>
+
+</sqlMap>
Added: ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/jpetstore/persistence/sqlmapdao/sql/Product.xml
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/jpetstore/persistence/sqlmapdao/sql/Product.xml?rev=683745&view=auto
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/jpetstore/persistence/sqlmapdao/sql/Product.xml (added)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/jpetstore/persistence/sqlmapdao/sql/Product.xml Thu Aug 7 16:21:46 2008
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
+ "http://ibatis.apache.org/dtd/sql-map-2.dtd">
+
+<sqlMap namespace="Product">
+
+ <typeAlias alias="product" type="com.ibatis.jpetstore.domain.Product"/>
+
+ <cacheModel id="productCache" type="LRU">
+ <flushInterval hours="24"/>
+ <property name="size" value="100"/>
+ </cacheModel>
+
+ <select id="getProduct" resultClass="product" parameterClass="string" cacheModel="productCache">
+ SELECT
+ PRODUCTID,
+ NAME,
+ DESCN as description,
+ CATEGORY as categoryId
+ FROM PRODUCT
+ WHERE PRODUCTID = #productId#
+ </select>
+
+ <select id="getProductListByCategory" resultClass="product" parameterClass="string" cacheModel="productCache">
+ SELECT
+ PRODUCTID,
+ NAME,
+ DESCN as description,
+ CATEGORY as categoryId
+ FROM PRODUCT
+ WHERE CATEGORY = #value#
+ </select>
+
+ <select id="searchProductList" resultClass="product">
+ select
+ PRODUCTID,
+ NAME,
+ DESCN as description,
+ CATEGORY as categoryId
+ from PRODUCT
+ <dynamic prepend="WHERE">
+ <iterate property="keywordList" open="" close="" conjunction="OR">
+ lower(name) like #keywordList[]# OR lower(category) like #keywordList[]# OR lower(descn) like #keywordList[]#
+ </iterate>
+ </dynamic>
+ </select>
+
+</sqlMap>
Added: ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/jpetstore/persistence/sqlmapdao/sql/Sequence.xml
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/jpetstore/persistence/sqlmapdao/sql/Sequence.xml?rev=683745&view=auto
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/jpetstore/persistence/sqlmapdao/sql/Sequence.xml (added)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/jpetstore/persistence/sqlmapdao/sql/Sequence.xml Thu Aug 7 16:21:46 2008
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
+ "http://ibatis.apache.org/dtd/sql-map-2.dtd">
+
+<sqlMap namespace="Sequence">
+
+ <typeAlias alias="sequence" type="com.ibatis.jpetstore.domain.Sequence"/>
+
+ <select id="getSequence" resultClass="sequence" parameterClass="sequence">
+ SELECT name, nextid
+ FROM SEQUENCE
+ WHERE NAME = #name#
+ </select>
+
+ <update id="updateSequence" parameterClass="sequence">
+ UPDATE SEQUENCE
+ SET NEXTID = #nextId#
+ WHERE NAME = #name#
+ </update>
+
+</sqlMap>
Added: ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/jpetstore/persistence/sqlmapdao/sql/sql-map-config.xml
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/jpetstore/persistence/sqlmapdao/sql/sql-map-config.xml?rev=683745&view=auto
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/jpetstore/persistence/sqlmapdao/sql/sql-map-config.xml (added)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/jpetstore/persistence/sqlmapdao/sql/sql-map-config.xml Thu Aug 7 16:21:46 2008
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE sqlMapConfig PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"
+ "http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
+
+<sqlMapConfig>
+
+ <properties resource="properties/database.properties"/>
+
+ <transactionManager type="JDBC">
+ <dataSource type="SIMPLE">
+ <property value="${driver}" name="JDBC.Driver"/>
+ <property value="${url}" name="JDBC.ConnectionURL"/>
+ <property value="${username}" name="JDBC.Username"/>
+ <property value="${password}" name="JDBC.Password"/>
+ </dataSource>
+ </transactionManager>
+
+ <sqlMap resource="com/ibatis/jpetstore/persistence/sqlmapdao/sql/Account.xml"/>
+ <sqlMap resource="com/ibatis/jpetstore/persistence/sqlmapdao/sql/Category.xml"/>
+ <sqlMap resource="com/ibatis/jpetstore/persistence/sqlmapdao/sql/Product.xml"/>
+ <sqlMap resource="com/ibatis/jpetstore/persistence/sqlmapdao/sql/Sequence.xml"/>
+ <sqlMap resource="com/ibatis/jpetstore/persistence/sqlmapdao/sql/LineItem.xml"/>
+ <sqlMap resource="com/ibatis/jpetstore/persistence/sqlmapdao/sql/Order.xml"/>
+ <sqlMap resource="com/ibatis/jpetstore/persistence/sqlmapdao/sql/Item.xml"/>
+
+</sqlMapConfig>
Added: ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/sqlmap/BaseSqlMapTest.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/sqlmap/BaseSqlMapTest.java?rev=683745&view=auto
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/sqlmap/BaseSqlMapTest.java (added)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/sqlmap/BaseSqlMapTest.java Thu Aug 7 16:21:46 2008
@@ -0,0 +1,156 @@
+package com.ibatis.sqlmap;
+
+import com.ibatis.common.jdbc.ScriptRunner;
+import com.ibatis.common.resources.Resources;
+import com.ibatis.sqlmap.client.*;
+import junit.framework.TestCase;
+import testdomain.*;
+
+import javax.sql.DataSource;
+import java.io.Reader;
+import java.sql.Connection;
+import java.util.*;
+
+public class BaseSqlMapTest extends TestCase {
+
+ protected static SqlMapClient sqlMap;
+
+ protected static void initSqlMap(String configFile, Properties props) throws Exception {
+ Reader reader = Resources.getResourceAsReader(configFile);
+ sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader, props);
+ reader.close();
+ }
+
+ protected static void initScript(String script) throws Exception {
+ DataSource ds = sqlMap.getDataSource();
+
+ Connection conn = ds.getConnection();
+
+ Reader reader = Resources.getResourceAsReader(script);
+
+ ScriptRunner runner = new ScriptRunner(conn, false, false);
+ runner.setLogWriter(null);
+ runner.setErrorLogWriter(null);
+
+ runner.runScript(reader);
+ conn.commit();
+ conn.close();
+ reader.close();
+ }
+
+ protected Account newAccount6() {
+ Account account = new Account();
+ account.setId(6);
+ account.setFirstName("Jennifer");
+ account.setLastName("Begin");
+ account.setEmailAddress("no_email@provided.com");
+ account.setBannerOption(true);
+ account.setCartOption(true);
+ return account;
+ }
+
+ protected FieldAccount newFieldAccount6() {
+ FieldAccount account = new FieldAccount();
+ account.id(6);
+ account.firstName("Jennifer");
+ account.lastName("Begin");
+ account.emailAddress("no_email@provided.com");
+ return account;
+ }
+
+ protected void assertAccount1(Account account) {
+ assertNotNull(account);
+ assertEquals(1, account.getId());
+ assertEquals("Clinton", account.getFirstName());
+ assertEquals("Begin", account.getLastName());
+ assertEquals("clinton.begin@ibatis.com", account.getEmailAddress());
+ }
+
+ protected void assertAccount2(Account account) {
+ assertNotNull(account);
+ assertEquals(2, account.getId());
+ assertEquals("Jim", account.getFirstName());
+ assertEquals("Smith", account.getLastName());
+ assertEquals(account.getEmailAddress(), "jim.smith@somewhere.com");
+ }
+
+ protected void assertList(List list) {
+ assertEquals(2, list.size());
+ }
+
+ protected void assertAccount6(Account account) {
+ assertNotNull(account);
+ assertEquals(6, account.getId());
+ assertEquals("Jennifer", account.getFirstName());
+ assertEquals("Begin", account.getLastName());
+ assertEquals("no_email@provided.com", account.getEmailAddress());
+ }
+
+ protected void assertPrivateAccount6(PrivateAccount account) {
+ assertNotNull(account);
+ assertEquals(6, account.getId());
+ assertEquals("Jennifer", account.getFirstName());
+ assertEquals("Begin", account.getLastName());
+ assertEquals("no_email@provided.com", account.getEmailAddress());
+ }
+
+ protected void assertFieldAccount6(FieldAccount account) {
+ assertNotNull(account);
+ assertEquals(6, account.id());
+ assertEquals("Jennifer", account.firstName());
+ assertEquals("Begin", account.lastName());
+ assertEquals("no_email@provided.com", account.emailAddress());
+ }
+
+ protected void assertAccount1(Map account) {
+ Integer id = (Integer) account.get("id");
+ String firstName = (String) account.get("firstName");
+ String lastName = (String) account.get("lastName");
+ String emailAddress = (String) account.get("emailAddress");
+
+ if (id == null) {
+ id = (Integer) account.get("ID");
+ firstName = (String) account.get("FIRSTNAME");
+ lastName = (String) account.get("LASTNAME");
+ emailAddress = (String) account.get("EMAILADDRESS");
+ }
+
+ assertEquals(new Integer(1), id);
+ assertEquals("Clinton", firstName);
+ assertEquals("Begin", lastName);
+ assertEquals("clinton.begin@ibatis.com", emailAddress);
+ }
+
+ protected void assertOrder1(Order order) {
+ Calendar cal = new GregorianCalendar(2003, 1, 15, 8, 15, 00);
+
+ assertEquals(1, order.getId());
+ assertEquals(cal.getTime().getTime(), order.getDate().getTime());
+ assertEquals("VISA", order.getCardType());
+ assertEquals("999999999999", order.getCardNumber());
+ assertEquals("05/03", order.getCardExpiry());
+ assertEquals("11 This Street", order.getStreet());
+ assertEquals("Victoria", order.getCity());
+ assertEquals("BC", order.getProvince());
+ assertEquals("C4B 4F4", order.getPostalCode());
+ }
+
+ protected void assertOrder1(Map order) {
+ Calendar cal = new GregorianCalendar(2003, 1, 15, 8, 15, 00);
+
+ assertEquals(new Integer(1), order.get("id"));
+ assertEquals(cal.getTime().getTime(), ((Date) order.get("date")).getTime());
+ assertEquals("VISA", order.get("cardType"));
+ assertEquals("999999999999", order.get("cardNumber"));
+ assertEquals("05/03", order.get("cardExpiry"));
+ assertEquals("11 This Street", order.get("street"));
+ assertEquals("Victoria", order.get("city"));
+ assertEquals("BC", order.get("province"));
+ assertEquals("C4B 4F4", order.get("postalCode"));
+ }
+
+ public void testDummy() {
+ // just to avoid warnings when running all tests.
+ }
+
+}
Added: ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/sqlmap/BatchTest.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/sqlmap/BatchTest.java?rev=683745&view=auto
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/sqlmap/BatchTest.java (added)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/sqlmap/BatchTest.java Thu Aug 7 16:21:46 2008
@@ -0,0 +1,373 @@
+package com.ibatis.sqlmap;
+
+import com.ibatis.sqlmap.engine.execution.BatchException;
+import org.apache.ibatis.executor.BatchResult;
+import testdomain.Account;
+
+import java.sql.*;
+import java.util.*;
+
+/**
+ * @author Jeff Butler
+ */
+public class BatchTest extends BaseSqlMapTest {
+
+ protected void setUp() throws Exception {
+ initSqlMap("com/ibatis/sqlmap/maps/SqlMapConfig.xml", null);
+ initScript("scripts/account-init.sql");
+ }
+
+ public void testExecutebatchDetailed() {
+ List accountList1 = new ArrayList();
+ Account account = new Account();
+ account.setId(10);
+ account.setFirstName("fred");
+ account.setLastName("flintstone");
+ account.setEmailAddress("fred.flintstone@gmail.com");
+ accountList1.add(account);
+
+ account = new Account();
+ account.setId(11);
+ account.setFirstName("fred");
+ account.setLastName("flintstone");
+ account.setEmailAddress("fred.flintstone@gmail.com");
+ accountList1.add(account);
+
+ account = new Account();
+ account.setId(12);
+ account.setFirstName("fred");
+ account.setLastName("flintstone");
+ account.setEmailAddress("fred.flintstone@gmail.com");
+ accountList1.add(account);
+
+ account = new Account();
+ account.setId(13);
+ account.setFirstName("fred");
+ account.setLastName("flintstone");
+ account.setEmailAddress("fred.flintstone@gmail.com");
+ accountList1.add(account);
+
+ account = new Account();
+ account.setId(14);
+ account.setFirstName("fred");
+ account.setLastName("flintstone");
+ account.setEmailAddress("fred.flintstone@gmail.com");
+ accountList1.add(account);
+
+ List accountList2 = new ArrayList();
+ account = new Account();
+ account.setId(15);
+ account.setFirstName("fred");
+ account.setLastName("flintstone");
+ account.setEmailAddress("fred.flintstone@gmail.com");
+ accountList2.add(account);
+
+ account = new Account();
+ account.setId(16);
+ account.setFirstName("fred");
+ account.setLastName("flintstone");
+ account.setEmailAddress("fred.flintstone@gmail.com");
+ accountList2.add(account);
+
+ account = new Account();
+ account.setId(17);
+ account.setFirstName("fred");
+ account.setLastName("flintstone");
+ account.setEmailAddress("fred.flintstone@gmail.com");
+ accountList2.add(account);
+
+ account = new Account();
+ account.setId(18);
+ account.setFirstName("fred");
+ account.setLastName("flintstone");
+ account.setEmailAddress("fred.flintstone@gmail.com");
+ accountList2.add(account);
+
+ try {
+ sqlMap.startTransaction();
+ sqlMap.startBatch();
+
+ // insert 5 accounts
+ for (int i = 0; i < accountList1.size(); i++) {
+ sqlMap.insert("insertAccountViaInlineParameters", accountList1.get(i));
+ }
+
+ // update 1 account
+ account = new Account();
+ account.setId(10);
+ account.setFirstName("barney");
+ account.setLastName("rubble");
+ account.setEmailAddress("barney.rubble@gmail.com");
+
+ sqlMap.update("updateAccountViaInlineParameters", account);
+
+ // insert 4 accounts
+ for (int i = 0; i < accountList2.size(); i++) {
+ sqlMap.insert("insertAccountViaInlineParameters", accountList2.get(i));
+ }
+
+ List results = sqlMap.executeBatchDetailed();
+ sqlMap.commitTransaction();
+
+ assertEquals(3, results.size());
+
+ BatchResult br = (BatchResult) results.get(0);
+ assertEquals(5, br.getUpdateCounts().length);
+
+ br = (BatchResult) results.get(1);
+ assertEquals(1, br.getUpdateCounts().length);
+
+ br = (BatchResult) results.get(2);
+ assertEquals(4, br.getUpdateCounts().length);
+
+ } catch (BatchException e) {
+ fail(e.getMessage());
+ } catch (SQLException e) {
+ fail(e.getMessage());
+ } finally {
+ try {
+ sqlMap.endTransaction();
+ } catch (SQLException e) {
+ fail(e.getMessage());
+ }
+ }
+ }
+
+ public void testExecutebatchDetailedWithError() {
+ List accountList1 = new ArrayList();
+ Account account = new Account();
+ account.setId(10);
+ account.setFirstName("fred");
+ account.setLastName("flintstone");
+ account.setEmailAddress("fred.flintstone@gmail.com");
+ accountList1.add(account);
+
+ account = new Account();
+ account.setId(11);
+ account.setFirstName("fred");
+ account.setLastName("flintstone");
+ account.setEmailAddress("fred.flintstone@gmail.com");
+ accountList1.add(account);
+
+ account = new Account();
+ account.setId(12);
+ account.setFirstName("fred");
+ account.setLastName("flintstone");
+ account.setEmailAddress("fred.flintstone@gmail.com");
+ accountList1.add(account);
+
+ account = new Account();
+ account.setId(13);
+ account.setFirstName("fred");
+ account.setLastName("flintstone");
+ account.setEmailAddress("fred.flintstone@gmail.com");
+ accountList1.add(account);
+
+ account = new Account();
+ account.setId(14);
+ account.setFirstName("fred");
+ account.setLastName("flintstone");
+ account.setEmailAddress("fred.flintstone@gmail.com");
+ accountList1.add(account);
+
+ List accountList2 = new ArrayList();
+ account = new Account();
+ account.setId(15);
+ account.setFirstName("fred");
+ account.setLastName("flintstone");
+ account.setEmailAddress("fred.flintstone@gmail.com");
+ accountList2.add(account);
+
+ account = new Account();
+ account.setId(16);
+ account.setFirstName("fred");
+ account.setLastName("flintstone");
+ account.setEmailAddress("fred.flintstone@gmail.com");
+ accountList2.add(account);
+
+ account = new Account();
+ account.setId(17);
+ account.setFirstName("fred");
+ account.setLastName("flintstone");
+ account.setEmailAddress("fred.flintstone@gmail.com");
+ accountList2.add(account);
+
+ account = new Account();
+ account.setId(18);
+ account.setFirstName("fred");
+ account.setLastName("flintstone");
+ account.setEmailAddress("fred.flintstone@gmail.com");
+ accountList2.add(account);
+
+ try {
+ sqlMap.startTransaction();
+ sqlMap.startBatch();
+
+ // insert 5 accounts
+ for (int i = 0; i < accountList1.size(); i++) {
+ sqlMap.insert("insertAccountViaInlineParameters", accountList1.get(i));
+ }
+
+ // update 1 account
+ account = new Account();
+ account.setId(10);
+ account.setFirstName("barney");
+ account.setLastName("rubble");
+ account.setEmailAddress("barney.rubble@gmail.com");
+
+ sqlMap.update("updateAccountViaInlineParameters", account);
+
+ // insert another account
+ account = new Account();
+ account.setId(19);
+ account.setFirstName("fred");
+ account.setLastName("flintstone");
+ account.setEmailAddress("fred.flintstone@gmail.com");
+ sqlMap.insert("insertAccountViaInlineParameters", account);
+
+ // insert 1 account with all null values (this should cause an error when the batch is executed)
+ account = new Account();
+ sqlMap.insert("insertAccountViaInlineParameters", account);
+
+ // update 1 account
+ account = new Account();
+ account.setId(11);
+ account.setFirstName("barney");
+ account.setLastName("rubble");
+ account.setEmailAddress("barney.rubble@gmail.com");
+
+ sqlMap.update("updateAccountViaInlineParameters", account);
+
+ // insert 4 accounts
+ for (int i = 0; i < accountList2.size(); i++) {
+ sqlMap.insert("insertAccountViaInlineParameters", accountList2.get(i));
+ }
+
+ sqlMap.executeBatchDetailed();
+ fail("This statement should not get executed - we expect an SQLException");
+ } catch (BatchException e) {
+ // the first statement of the failing batch should have executed OK
+ BatchUpdateException bue = e.getBatchUpdateException();
+ assertEquals(1, bue.getUpdateCounts().length);
+
+ List results = e.getSuccessfulBatchResults();
+ assertEquals(2, results.size());
+ BatchResult br = (BatchResult) results.get(0);
+ assertEquals(5, br.getUpdateCounts().length);
+ br = (BatchResult) results.get(1);
+ assertEquals(1, br.getUpdateCounts().length);
+ } catch (SQLException e) {
+ fail(e.getMessage());
+ } finally {
+ try {
+ sqlMap.endTransaction();
+ } catch (SQLException e) {
+ fail(e.getMessage());
+ }
+ }
+ }
+
+ public void testExecutebatch() {
+ List accountList1 = new ArrayList();
+ Account account = new Account();
+ account.setId(10);
+ account.setFirstName("fred");
+ account.setLastName("flintstone");
+ account.setEmailAddress("fred.flintstone@gmail.com");
+ accountList1.add(account);
+
+ account = new Account();
+ account.setId(11);
+ account.setFirstName("fred");
+ account.setLastName("flintstone");
+ account.setEmailAddress("fred.flintstone@gmail.com");
+ accountList1.add(account);
+
+ account = new Account();
+ account.setId(12);
+ account.setFirstName("fred");
+ account.setLastName("flintstone");
+ account.setEmailAddress("fred.flintstone@gmail.com");
+ accountList1.add(account);
+
+ account = new Account();
+ account.setId(13);
+ account.setFirstName("fred");
+ account.setLastName("flintstone");
+ account.setEmailAddress("fred.flintstone@gmail.com");
+ accountList1.add(account);
+
+ account = new Account();
+ account.setId(14);
+ account.setFirstName("fred");
+ account.setLastName("flintstone");
+ account.setEmailAddress("fred.flintstone@gmail.com");
+ accountList1.add(account);
+
+ List accountList2 = new ArrayList();
+ account = new Account();
+ account.setId(15);
+ account.setFirstName("fred");
+ account.setLastName("flintstone");
+ account.setEmailAddress("fred.flintstone@gmail.com");
+ accountList2.add(account);
+
+ account = new Account();
+ account.setId(16);
+ account.setFirstName("fred");
+ account.setLastName("flintstone");
+ account.setEmailAddress("fred.flintstone@gmail.com");
+ accountList2.add(account);
+
+ account = new Account();
+ account.setId(17);
+ account.setFirstName("fred");
+ account.setLastName("flintstone");
+ account.setEmailAddress("fred.flintstone@gmail.com");
+ accountList2.add(account);
+
+ account = new Account();
+ account.setId(18);
+ account.setFirstName("fred");
+ account.setLastName("flintstone");
+ account.setEmailAddress("fred.flintstone@gmail.com");
+ accountList2.add(account);
+
+ try {
+ sqlMap.startTransaction();
+ sqlMap.startBatch();
+
+ // insert 5 accounts
+ for (int i = 0; i < accountList1.size(); i++) {
+ sqlMap.insert("insertAccountViaInlineParameters", accountList1.get(i));
+ }
+
+ // update 1 account
+ account = new Account();
+ account.setId(10);
+ account.setFirstName("barney");
+ account.setLastName("rubble");
+ account.setEmailAddress("barney.rubble@gmail.com");
+
+ sqlMap.update("updateAccountViaInlineParameters", account);
+
+ // insert 4 accounts
+ for (int i = 0; i < accountList2.size(); i++) {
+ sqlMap.insert("insertAccountViaInlineParameters", accountList2.get(i));
+ }
+
+ int results = sqlMap.executeBatch();
+ sqlMap.commitTransaction();
+
+ assertEquals(10, results);
+ } catch (SQLException e) {
+ fail(e.getMessage());
+ } finally {
+ try {
+ sqlMap.endTransaction();
+ } catch (SQLException e) {
+ fail(e.getMessage());
+ }
+ }
+ }
+}
Added: ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/sqlmap/CacheStatementTest.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/sqlmap/CacheStatementTest.java?rev=683745&view=auto
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/sqlmap/CacheStatementTest.java (added)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/sqlmap/CacheStatementTest.java Thu Aug 7 16:21:46 2008
@@ -0,0 +1,286 @@
+package com.ibatis.sqlmap;
+
+import com.ibatis.sqlmap.client.*;
+import org.apache.ibatis.cache.CacheKey;
+import testdomain.Account;
+
+import java.sql.SQLException;
+import java.util.*;
+
+public class CacheStatementTest extends BaseSqlMapTest {
+
+ // SETUP & TEARDOWN
+
+ protected void setUp() throws Exception {
+ initSqlMap("com/ibatis/sqlmap/maps/SqlMapConfig.xml", null);
+ initScript("scripts/account-init.sql");
+ }
+
+ protected void tearDown() throws Exception {
+ }
+
+ public void testMappedStatementQueryWithCache() throws SQLException {
+ List list = sqlMap.queryForList("getCachedAccountsViaResultMap", null);
+
+ int firstId = System.identityHashCode(list);
+
+ list = sqlMap.queryForList("getCachedAccountsViaResultMap", null);
+
+ int secondId = System.identityHashCode(list);
+
+ assertEquals(firstId, secondId);
+
+ Account account = (Account) list.get(1);
+ account.setEmailAddress("new.clinton@ibatis.com");
+ sqlMap.update("updateAccountViaInlineParameters", account);
+
+ list = sqlMap.queryForList("getCachedAccountsViaResultMap", null);
+
+ int thirdId = System.identityHashCode(list);
+
+ assertTrue(firstId != thirdId);
+
+ }
+
+ public void testMappedStatementQueryWithCache2() throws SQLException {
+ // tests the new methods that don't require a parameter object
+ List list = sqlMap.queryForList("getCachedAccountsViaResultMap");
+
+ int firstId = System.identityHashCode(list);
+
+ list = sqlMap.queryForList("getCachedAccountsViaResultMap");
+
+ int secondId = System.identityHashCode(list);
+
+ assertEquals(firstId, secondId);
+
+ Account account = (Account) list.get(1);
+ account.setEmailAddress("new.clinton@ibatis.com");
+ sqlMap.update("updateAccountViaInlineParameters", account);
+
+ list = sqlMap.queryForList("getCachedAccountsViaResultMap");
+
+ int thirdId = System.identityHashCode(list);
+
+ assertTrue(firstId != thirdId);
+
+ }
+
+ public void testFlushDataCache() throws SQLException {
+ List list = sqlMap.queryForList("getCachedAccountsViaResultMap", null);
+ int firstId = System.identityHashCode(list);
+ list = sqlMap.queryForList("getCachedAccountsViaResultMap", null);
+ int secondId = System.identityHashCode(list);
+ assertEquals(firstId, secondId);
+ sqlMap.flushDataCache();
+ list = sqlMap.queryForList("getCachedAccountsViaResultMap", null);
+ int thirdId = System.identityHashCode(list);
+ assertTrue(firstId != thirdId);
+ }
+
+ public void testFlushDataCache2() throws SQLException {
+ // tests the new methods that don't require a parameter object
+ List list = sqlMap.queryForList("getCachedAccountsViaResultMap");
+ int firstId = System.identityHashCode(list);
+ list = sqlMap.queryForList("getCachedAccountsViaResultMap");
+ int secondId = System.identityHashCode(list);
+ assertEquals(firstId, secondId);
+ sqlMap.flushDataCache();
+ list = sqlMap.queryForList("getCachedAccountsViaResultMap");
+ int thirdId = System.identityHashCode(list);
+ assertTrue(firstId != thirdId);
+ }
+
+ public void testFlushDataCacheOnExecute() throws SQLException {
+ List list = sqlMap.queryForList("getCachedAccountsViaResultMap", null);
+ int firstId = System.identityHashCode(list);
+ list = sqlMap.queryForList("getCachedAccountsViaResultMap", null);
+ int secondId = System.identityHashCode(list);
+ assertEquals(firstId, secondId);
+ sqlMap.update("updateAccountViaInlineParameters", list.get(0));
+ list = sqlMap.queryForList("getCachedAccountsViaResultMap", null);
+ int thirdId = System.identityHashCode(list);
+ assertTrue(firstId != thirdId);
+ }
+
+ public void testFlushDataCacheOnExecute2() throws SQLException {
+ // tests the new methods that don't require a parameter object
+ List list = sqlMap.queryForList("getCachedAccountsViaResultMap");
+ int firstId = System.identityHashCode(list);
+ list = sqlMap.queryForList("getCachedAccountsViaResultMap");
+ int secondId = System.identityHashCode(list);
+ assertEquals(firstId, secondId);
+ sqlMap.update("updateAccountViaInlineParameters", list.get(0));
+ list = sqlMap.queryForList("getCachedAccountsViaResultMap");
+ int thirdId = System.identityHashCode(list);
+ assertTrue(firstId != thirdId);
+ }
+
+ public void testFlushDataCacheOnExecuteInBatch() throws SQLException {
+ List list = sqlMap.queryForList("getCachedAccountsViaResultMap", null);
+ int firstId = System.identityHashCode(list);
+ list = sqlMap.queryForList("getCachedAccountsViaResultMap", null);
+ int secondId = System.identityHashCode(list);
+ assertEquals(firstId, secondId);
+ sqlMap.startTransaction();
+ sqlMap.update("updateAccountViaInlineParameters", list.get(0));
+ sqlMap.executeBatch();
+ list = sqlMap.queryForList("getCachedAccountsViaResultMap", null);
+ sqlMap.endTransaction();
+ int thirdId = System.identityHashCode(list);
+ assertTrue(firstId != thirdId);
+ }
+
+ public void testFlushDataCacheOnExecuteInBatch2() throws SQLException {
+ // tests the new methods that don't require a parameter object
+ List list = sqlMap.queryForList("getCachedAccountsViaResultMap");
+ int firstId = System.identityHashCode(list);
+ list = sqlMap.queryForList("getCachedAccountsViaResultMap");
+ int secondId = System.identityHashCode(list);
+ assertEquals(firstId, secondId);
+ sqlMap.startTransaction();
+ sqlMap.update("updateAccountViaInlineParameters", list.get(0));
+ sqlMap.executeBatch();
+ list = sqlMap.queryForList("getCachedAccountsViaResultMap");
+ int thirdId = System.identityHashCode(list);
+ sqlMap.endTransaction();
+ assertTrue(firstId != thirdId);
+ }
+
+ public void testFlushDataCacheOnExecuteInBatchWithTx() throws SQLException {
+ List list = sqlMap.queryForList("getCachedAccountsViaResultMap", null);
+ int firstId = System.identityHashCode(list);
+ list = sqlMap.queryForList("getCachedAccountsViaResultMap", null);
+ int secondId = System.identityHashCode(list);
+ assertEquals(firstId, secondId);
+ try {
+ sqlMap.startTransaction();
+ sqlMap.startBatch();
+ sqlMap.update("updateAccountViaInlineParameters", list.get(0));
+ sqlMap.executeBatch();
+ sqlMap.commitTransaction();
+ } finally {
+ sqlMap.endTransaction();
+ }
+ list = sqlMap.queryForList("getCachedAccountsViaResultMap", null);
+ int thirdId = System.identityHashCode(list);
+ assertTrue(firstId != thirdId);
+ }
+
+ public void testMappedStatementQueryWithThreadedCache() throws SQLException {
+
+ Map results = new HashMap();
+
+ TestCacheThread.startThread(sqlMap, results, "getCachedAccountsViaResultMap");
+ Integer firstId = (Integer) results.get("id");
+
+ TestCacheThread.startThread(sqlMap, results, "getCachedAccountsViaResultMap");
+ Integer secondId = (Integer) results.get("id");
+
+ assertTrue(firstId.equals(secondId));
+
+ List list = (List) results.get("list");
+
+ Account account = (Account) list.get(1);
+ account.setEmailAddress("new.clinton@ibatis.com");
+ sqlMap.update("updateAccountViaInlineParameters", account);
+
+ list = sqlMap.queryForList("getCachedAccountsViaResultMap", null);
+
+ int thirdId = System.identityHashCode(list);
+
+ assertTrue(firstId.intValue() != thirdId);
+
+ }
+
+ public void testMappedStatementQueryWithThreadedReadWriteCache() throws SQLException {
+
+ Map results = new HashMap();
+
+ TestCacheThread.startThread(sqlMap, results, "getRWCachedAccountsViaResultMap");
+ Integer firstId = (Integer) results.get("id");
+
+ TestCacheThread.startThread(sqlMap, results, "getRWCachedAccountsViaResultMap");
+ Integer secondId = (Integer) results.get("id");
+
+ assertFalse(firstId.equals(secondId));
+
+ List list = (List) results.get("list");
+
+ Account account = (Account) list.get(1);
+ account.setEmailAddress("new.clinton@ibatis.com");
+ sqlMap.update("updateAccountViaInlineParameters", account);
+
+ list = sqlMap.queryForList("getCachedAccountsViaResultMap", null);
+
+ int thirdId = System.identityHashCode(list);
+
+ assertTrue(firstId.intValue() != thirdId);
+
+ }
+
+ public void testCacheKeyWithSameHashcode() {
+ CacheKey key1 = new CacheKey();
+ CacheKey key2 = new CacheKey();
+
+ key1.update("HS1CS001");
+ key2.update("HS1D4001");
+
+ assertEquals("Expect same hashcode.", key1.hashCode(), key2.hashCode());
+ assertFalse("Expect not equal", key1.equals(key2));
+ }
+
+ public void testCacheKeyWithTwoParamsSameHashcode() {
+ CacheKey key1 = new CacheKey();
+ CacheKey key2 = new CacheKey();
+
+ key1.update("HS1CS001");
+ key1.update("HS1D4001");
+
+ key2.update("HS1D4001");
+ key2.update("HS1CS001");
+
+ assertEquals("Expect same hashcode.", key1.hashCode(), key2.hashCode());
+ assertFalse("Expect not equal", key1.equals(key2));
+ }
+
+ private static class TestCacheThread extends Thread {
+ private SqlMapClient sqlMap;
+ private Map results;
+ private String statementName;
+
+ public TestCacheThread(SqlMapClient sqlMap, Map results, String statementName) {
+ this.sqlMap = sqlMap;
+ this.results = results;
+ this.statementName = statementName;
+ }
+
+ public void run() {
+ try {
+ SqlMapSession session = sqlMap.openSession();
+ List list = session.queryForList(statementName, null);
+ int firstId = System.identityHashCode(list);
+ list = session.queryForList(statementName, null);
+ int secondId = System.identityHashCode(list);
+ //assertEquals(firstId, secondId);
+ results.put("id", new Integer(System.identityHashCode(list)));
+ results.put("list", list);
+ session.close();
+ } catch (SQLException e) {
+ throw new RuntimeException("Error. Cause: " + e);
+ }
+ }
+
+ public static void startThread(SqlMapClient sqlMap, Map results, String statementName) {
+ Thread t = new TestCacheThread(sqlMap, results, statementName);
+ t.start();
+ try {
+ t.join();
+ } catch (InterruptedException e) {
+ throw new RuntimeException("Error. Cause: " + e);
+ }
+ }
+ }
+
+
+}
Added: ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/sqlmap/ComplexTypeTest.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/sqlmap/ComplexTypeTest.java?rev=683745&view=auto
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/sqlmap/ComplexTypeTest.java (added)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/sqlmap/ComplexTypeTest.java Thu Aug 7 16:21:46 2008
@@ -0,0 +1,34 @@
+package com.ibatis.sqlmap;
+
+import testdomain.ComplexBean;
+
+import java.util.*;
+
+public class ComplexTypeTest extends BaseSqlMapTest {
+
+ // SETUP & TEARDOWN
+
+ protected void setUp() throws Exception {
+ initSqlMap("com/ibatis/sqlmap/maps/SqlMapConfig.xml", null);
+ initScript("scripts/account-init.sql");
+ initScript("scripts/order-init.sql");
+ initScript("scripts/line_item-init.sql");
+ }
+
+ protected void tearDown() throws Exception {
+ }
+
+ public void testMapBeanMap() throws Exception {
+ Map map = new HashMap();
+ ComplexBean bean = new ComplexBean();
+ bean.setMap(new HashMap());
+ bean.getMap().put("id", new Integer(1));
+ map.put("bean", bean);
+
+ Integer id = (Integer) sqlMap.queryForObject("mapBeanMap", map);
+
+ assertEquals(id, bean.getMap().get("id"));
+ }
+
+
+}
Added: ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/sqlmap/DirectFieldMappingTest.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/sqlmap/DirectFieldMappingTest.java?rev=683745&view=auto
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/sqlmap/DirectFieldMappingTest.java (added)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/sqlmap/DirectFieldMappingTest.java Thu Aug 7 16:21:46 2008
@@ -0,0 +1,36 @@
+package com.ibatis.sqlmap;
+
+import testdomain.*;
+
+import java.sql.SQLException;
+
+public class DirectFieldMappingTest extends BaseSqlMapTest {
+
+ protected void setUp() throws Exception {
+ initSqlMap("com/ibatis/sqlmap/maps/SqlMapConfig.xml", null);
+ initScript("scripts/account-init.sql");
+ }
+
+ public void testInsertAndSelectDirectToFields() throws SQLException {
+ FieldAccount account = newFieldAccount6();
+
+ sqlMap.insert("insertAccountFromFields", account);
+
+ account = (FieldAccount) sqlMap.queryForObject("getAccountToFields", new Integer(6));
+
+ assertFieldAccount6(account);
+ assertFieldAccount6(account.account());
+ }
+
+ public void testGetAccountWithPrivateConstructor() throws SQLException {
+ FieldAccount account = newFieldAccount6();
+
+ sqlMap.insert("insertAccountFromFields", account);
+
+ PrivateAccount pvt = (PrivateAccount) sqlMap.queryForObject("getAccountWithPrivateConstructor", new Integer(6));
+
+ assertPrivateAccount6(pvt);
+ }
+
+
+}
Added: ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/sqlmap/DiscriminatorTest.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/sqlmap/DiscriminatorTest.java?rev=683745&view=auto
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/sqlmap/DiscriminatorTest.java (added)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/sqlmap/DiscriminatorTest.java Thu Aug 7 16:21:46 2008
@@ -0,0 +1,75 @@
+package com.ibatis.sqlmap;
+
+import testdomain.*;
+
+import java.util.List;
+
+public class DiscriminatorTest extends BaseSqlMapTest {
+
+ protected void setUp() throws Exception {
+ initSqlMap("com/ibatis/sqlmap/maps/SqlMapConfig.xml", null);
+ initScript("scripts/docs-init.sql");
+ }
+
+ public void testDiscriminator() throws Exception {
+
+ List list = sqlMap.queryForList("getDocuments", null);
+ assertEquals(6, list.size());
+
+ assertTrue(list.get(0) instanceof Book);
+ assertTrue(list.get(1) instanceof Magazine);
+ assertTrue(list.get(2) instanceof Book);
+ assertTrue(list.get(3) instanceof Magazine);
+ assertTrue(list.get(4) instanceof Document);
+ assertTrue(list.get(5) instanceof Document);
+
+ assertEquals(1, ((Document) list.get(0)).getId());
+ assertEquals(2, ((Document) list.get(1)).getId());
+ assertEquals(3, ((Document) list.get(2)).getId());
+ assertEquals(4, ((Document) list.get(3)).getId());
+ assertEquals(5, ((Document) list.get(4)).getId());
+ assertEquals(6, ((Document) list.get(5)).getId());
+
+ assertEquals(new Integer(55), ((Book) list.get(0)).getPages());
+ assertEquals("Lyon", ((Magazine) list.get(1)).getCity());
+ assertEquals(new Integer(3587), ((Book) list.get(2)).getPages());
+ assertEquals("Paris", ((Magazine) list.get(3)).getCity());
+ }
+
+
+ public void testDiscriminatorInNestedResultMap() throws Exception {
+ List list = sqlMap.queryForList("getPersonDocuments");
+ assertEquals(3, list.size());
+
+ assertTrue(((PersonDocument) list.get(0)).getFavoriteDocument() instanceof Magazine);
+ assertTrue(((PersonDocument) list.get(1)).getFavoriteDocument() instanceof Book);
+ assertTrue(((PersonDocument) list.get(2)).getFavoriteDocument() instanceof Document);
+
+ }
+
+ public void testDiscriminatorWithNestedResultMap() throws Exception {
+ List list = sqlMap.queryForList("getDocumentsWithAttributes");
+ assertEquals(6, list.size());
+
+ assertTrue(list.get(0) instanceof Book);
+ Book b = (Book) list.get(0);
+ assertEquals(2, b.getAttributes().size());
+
+ assertTrue(list.get(1) instanceof Magazine);
+ Magazine m = (Magazine) list.get(1);
+ assertEquals(1, m.getAttributes().size());
+
+ assertTrue(list.get(2) instanceof Book);
+ b = (Book) list.get(2);
+ assertEquals(2, b.getAttributes().size());
+
+ Document d = (Document) list.get(3);
+ assertEquals(0, d.getAttributes().size());
+
+ d = (Document) list.get(4);
+ assertEquals(0, d.getAttributes().size());
+
+ d = (Document) list.get(5);
+ assertEquals(0, d.getAttributes().size());
+ }
+}
\ No newline at end of file
Added: ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/sqlmap/DynamicPrependTest.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/sqlmap/DynamicPrependTest.java?rev=683745&view=auto
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/sqlmap/DynamicPrependTest.java (added)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/sqlmap/DynamicPrependTest.java Thu Aug 7 16:21:46 2008
@@ -0,0 +1,179 @@
+package com.ibatis.sqlmap;
+
+import testdomain.*;
+
+import java.sql.SQLException;
+import java.util.*;
+
+public class DynamicPrependTest extends BaseSqlMapTest {
+
+ protected void setUp() throws Exception {
+ initSqlMap("com/ibatis/sqlmap/maps/SqlMapConfig.xml", null);
+ initScript("scripts/account-init.sql");
+ }
+
+ protected void tearDown() throws Exception {
+ }
+
+ // Iterate with prepend
+
+ public void testIterateWithPrepend1() throws SQLException {
+ List params = Arrays.asList(new Integer[]{new Integer(1), new Integer(2), new Integer(3)});
+ List list = sqlMap.queryForList("dynamicIterateWithPrepend1", params);
+ assertAccount1((Account) list.get(0));
+ assertEquals(3, list.size());
+ }
+
+ public void testIterateWithPrepend2() throws SQLException {
+ List params = Arrays.asList(new Integer[]{new Integer(1), new Integer(2), new Integer(3)});
+ List list = sqlMap.queryForList("dynamicIterateWithPrepend2", params);
+ assertAccount1((Account) list.get(0));
+ assertEquals(3, list.size());
+ }
+
+ public void testIterateWithPrepend2b() throws SQLException {
+
+ Account account1, account2, account3;
+ account1 = new Account();
+ account1.setId(1);
+
+ account2 = new Account();
+ account2.setId(2);
+
+ account3 = new Account();
+ account3.setId(3);
+
+ List params = Arrays.asList(new Account[]{account1, account2, account3});
+ List list = sqlMap.queryForList("dynamicIterateWithPrepend2b", params);
+ assertAccount1((Account) list.get(0));
+ assertEquals(3, list.size());
+ }
+
+ public void testIterateWithPrepend2c() throws SQLException {
+
+ Account account1, account2, account3;
+ account1 = new Account();
+ account1.setId(1);
+
+ account2 = new Account();
+ account2.setId(2);
+
+ account3 = new Account();
+ account3.setId(3);
+
+ List params = Arrays.asList(new Account[]{account1, account2, account3});
+
+ MyBean x = new MyBean();
+ x.setMyList(params);
+
+ List list = sqlMap.queryForList("dynamicIterateWithPrepend2c", x);
+ assertAccount1((Account) list.get(0));
+ assertEquals(3, list.size());
+ assertEquals(1, ((Account) list.get(0)).getId());
+ assertEquals(2, ((Account) list.get(1)).getId());
+
+ }
+
+ public void testIterateWithPrepend2d() throws SQLException {
+
+ List params = Arrays.asList(new Integer[]{new Integer(1), new Integer(2), new Integer(3)});
+
+ MyBean x = new MyBean();
+ x.setMyList(params);
+
+ List list = sqlMap.queryForList("dynamicIterateWithPrepend2d", x);
+ assertAccount1((Account) list.get(0));
+ assertEquals(2, list.size());
+ assertEquals(1, ((Account) list.get(0)).getId());
+ assertEquals(3, ((Account) list.get(1)).getId());
+
+ }
+
+ public void testIterateWithPrepend2e() throws SQLException {
+
+ Object[] params = new Object[]{new Integer(1), new Integer(2), new Integer(3)};
+
+ MyBean x = new MyBean();
+ x.setMyArray(params);
+
+ List list = sqlMap.queryForList("dynamicIterateWithPrepend2e", x);
+ assertAccount1((Account) list.get(0));
+ assertEquals(2, list.size());
+ assertEquals(1, ((Account) list.get(0)).getId());
+ assertEquals(3, ((Account) list.get(1)).getId());
+
+ }
+
+ public void testIterateWithPrepend2f() throws SQLException {
+
+ int[] params = new int[]{1, 2, 3};
+
+ MyBean x = new MyBean();
+ x.setIntArray(params);
+
+ List list = sqlMap.queryForList("dynamicIterateWithPrepend2f", x);
+ assertAccount1((Account) list.get(0));
+ assertEquals(2, list.size());
+ assertEquals(1, ((Account) list.get(0)).getId());
+ assertEquals(3, ((Account) list.get(1)).getId());
+
+ }
+
+ public void testIterateWithPrepend3() throws SQLException {
+ List params = Arrays.asList(new Integer[]{new Integer(1), new Integer(2), new Integer(3)});
+ List list = sqlMap.queryForList("dynamicIterateWithPrepend3", params);
+ assertAccount1((Account) list.get(0));
+ assertEquals(3, list.size());
+ }
+
+ public void testDynamicWithPrepend1() throws SQLException {
+ Account account = new Account();
+ account.setId(1);
+ account = (Account) sqlMap.queryForObject("dynamicWithPrepend", account);
+ assertAccount1(account);
+ }
+
+ public void testDynamicWithPrepend2() throws SQLException {
+ Account account = new Account();
+ account.setId(1);
+ account.setFirstName("Clinton");
+ account = (Account) sqlMap.queryForObject("dynamicWithPrepend", account);
+ assertAccount1(account);
+ }
+
+ public void testDynamicWithPrepend3() throws SQLException {
+ Account account = new Account();
+ account.setId(1);
+ account.setFirstName("Clinton");
+ account.setLastName("Begin");
+ account = (Account) sqlMap.queryForObject("dynamicWithPrepend", account);
+ assertAccount1(account);
+ }
+
+ public void testIterateWithPrepend4() throws SQLException {
+ List list = sqlMap.queryForList("dynamicWithPrepend", null);
+ assertAccount1((Account) list.get(0));
+ assertEquals(5, list.size());
+ }
+
+ public void testIterateWithTwoPrepends() throws SQLException {
+ Account account = new Account();
+ account.setId(1);
+ account.setFirstName("Clinton");
+ account = (Account) sqlMap.queryForObject("dynamicWithPrepend", account);
+ assertNotNull(account);
+ assertAccount1(account);
+
+ List list = sqlMap.queryForList("dynamicWithTwoDynamicElements", account);
+ assertAccount1((Account) list.get(0));
+ }
+
+ public void testComplexDynamic() throws SQLException {
+ Account account = new Account();
+ account.setId(1);
+ account.setFirstName("Clinton");
+ account.setLastName("Begin");
+ List list = sqlMap.queryForList("complexDynamicStatement", account);
+ assertAccount1((Account) list.get(0));
+ }
+}
Added: ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/sqlmap/DynamicTest.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/sqlmap/DynamicTest.java?rev=683745&view=auto
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/sqlmap/DynamicTest.java (added)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/sqlmap/DynamicTest.java Thu Aug 7 16:21:46 2008
@@ -0,0 +1,248 @@
+package com.ibatis.sqlmap;
+
+import testdomain.Account;
+
+import java.sql.SQLException;
+import java.util.*;
+
+public class DynamicTest extends BaseSqlMapTest {
+
+ protected void setUp() throws Exception {
+ initSqlMap("com/ibatis/sqlmap/maps/SqlMapConfig.xml", null);
+ initScript("scripts/account-init.sql");
+ }
+
+ protected void tearDown() throws Exception {
+ }
+
+ // PARAMETER PRESENT
+
+ public void testIsParameterPresentTrue() throws SQLException {
+ List list = sqlMap.queryForList("dynamicIsParameterPresent", new Integer(1));
+ assertAccount1((Account) list.get(0));
+ assertEquals(1, list.size());
+ }
+
+ public void testIsParameterPresentFalse() throws SQLException {
+ List list = sqlMap.queryForList("dynamicIsParameterPresent", null);
+ assertEquals(5, list.size());
+ }
+
+ // EMPTY
+
+ public void testIsNotEmptyTrue() throws SQLException {
+ List list = sqlMap.queryForList("dynamicIsNotEmpty", "Clinton");
+ assertAccount1((Account) list.get(0));
+ assertEquals(1, list.size());
+ }
+
+ public void testIsNotEmptyFalse() throws SQLException {
+ List list = sqlMap.queryForList("dynamicIsNotEmpty", "");
+ assertEquals(5, list.size());
+ }
+
+ // EQUAL
+
+ public void testIsEqualTrue() throws SQLException {
+ List list = sqlMap.queryForList("dynamicIsEqual", "Clinton");
+ assertAccount1((Account) list.get(0));
+ assertEquals(1, list.size());
+ }
+
+ public void testIsEqualFalse() throws SQLException {
+ List list = sqlMap.queryForList("dynamicIsEqual", "BLAH!");
+ assertEquals(5, list.size());
+ }
+
+ // GREATER
+
+ public void testIsGreaterTrue() throws SQLException {
+ List list = sqlMap.queryForList("dynamicIsGreater", new Integer(5));
+ assertAccount1((Account) list.get(0));
+ assertEquals(1, list.size());
+ }
+
+ public void testIsGreaterFalse() throws SQLException {
+ List list = sqlMap.queryForList("dynamicIsGreater", new Integer(1));
+ assertEquals(5, list.size());
+ }
+
+ // GREATER EQUAL
+
+ public void testIsGreaterEqualTrue() throws SQLException {
+ List list = sqlMap.queryForList("dynamicIsGreaterEqual", new Integer(3));
+ assertAccount1((Account) list.get(0));
+ assertEquals(1, list.size());
+ }
+
+ public void testIsGreaterEqualFalse() throws SQLException {
+ List list = sqlMap.queryForList("dynamicIsGreaterEqual", new Integer(1));
+ assertEquals(5, list.size());
+ }
+
+ // LESS
+
+ public void testIsLessTrue() throws SQLException {
+ List list = sqlMap.queryForList("dynamicIsLess", new Integer(1));
+ assertAccount1((Account) list.get(0));
+ assertEquals(1, list.size());
+ }
+
+ public void testIsLessFalse() throws SQLException {
+ List list = sqlMap.queryForList("dynamicIsLess", new Integer(5));
+ assertEquals(5, list.size());
+ }
+
+ // LESS EQUAL
+
+ public void testIsLessEqualTrue() throws SQLException {
+ List list = sqlMap.queryForList("dynamicIsLessEqual", new Integer(3));
+ assertAccount1((Account) list.get(0));
+ assertEquals(1, list.size());
+ }
+
+ public void testIsLessEqualFalse() throws SQLException {
+ List list = sqlMap.queryForList("dynamicIsLessEqual", new Integer(5));
+ assertEquals(5, list.size());
+ }
+
+ // NULL
+
+ public void testIsNotNullTrue() throws SQLException {
+ List list = sqlMap.queryForList("dynamicIsNotNull", "");
+ assertAccount1((Account) list.get(0));
+ assertEquals(1, list.size());
+ }
+
+ public void testIsNotNullFalse() throws SQLException {
+ List list = sqlMap.queryForList("dynamicIsNotNull", null);
+ assertEquals(5, list.size());
+ }
+
+ // PROPERTY AVAILABLE
+
+ public void testIsPropertyAvailableTrue() throws SQLException {
+ List list = sqlMap.queryForList("dynamicIsPropertyAvailable", new Account());
+ assertAccount1((Account) list.get(0));
+ assertEquals(1, list.size());
+ }
+
+ public void testEmptyParameterObject() throws SQLException {
+ Account account = new Account();
+ account.setId(-1);
+ List list = sqlMap.queryForList("dynamicQueryByExample", account);
+ assertAccount1((Account) list.get(0));
+ assertEquals(5, list.size());
+ }
+
+ public void testComplexDynamicQuery() throws SQLException {
+ Account account = new Account();
+ account.setId(2);
+ account.setFirstName("Jim");
+ account.setLastName("Smith");
+ account.setEmailAddress("jim.smith@somewhere.com");
+ List list = sqlMap.queryForList("complexDynamicQueryByExample", account);
+ assertAccount2((Account) list.get(0));
+ assertEquals(1, list.size());
+ }
+
+ public void testComplexDynamicQueryLiteral() throws SQLException {
+ Account account = new Account();
+ account.setId(2);
+ account.setFirstName("Jim");
+ account.setLastName("Smith");
+ account.setEmailAddress("jim.smith@somewhere.com");
+ List list = sqlMap.queryForList("complexDynamicQueryByExampleLiteral", account);
+ assertAccount2((Account) list.get(0));
+ assertEquals(1, list.size());
+ }
+
+// COMPLETE STATEMENT SUBSTITUTION
+
+// -- No longer supported. Conflicted with and deemed less valuable than
+// -- iterative $substitutions[]$.
+//
+// public void testCompleteStatementSubst() throws SQLException {
+// String statement = "select" +
+// " ACC_ID as id," +
+// " ACC_FIRST_NAME as firstName," +
+// " ACC_LAST_NAME as lastName," +
+// " ACC_EMAIL as emailAddress" +
+// " from ACCOUNT" +
+// " WHERE ACC_ID = #id#";
+// Integer id = new Integer(1);
+//
+// Map params = new HashMap();
+// params.put("id", id);
+// params.put("statement", statement);
+//
+// List list = sqlMap.queryForList("dynamicSubst", params);
+// assertAccount1((Account) list.get(0));
+// assertEquals(1, list.size());
+// }
+
+ // Query By Example w/Prepend
+
+ public void testQueryByExample() throws SQLException {
+ Account account;
+
+ account = new Account();
+ account.setId(1);
+ account = (Account) sqlMap.queryForObject("dynamicQueryByExample", account);
+ assertAccount1(account);
+
+ account = new Account();
+ account.setFirstName("Clinton");
+ account = (Account) sqlMap.queryForObject("dynamicQueryByExample", account);
+ assertAccount1(account);
+
+ account = new Account();
+ account.setLastName("Begin");
+ account = (Account) sqlMap.queryForObject("dynamicQueryByExample", account);
+ assertAccount1(account);
+
+ account = new Account();
+ account.setEmailAddress("clinton");
+ account = (Account) sqlMap.queryForObject("dynamicQueryByExample", account);
+ assertAccount1(account);
+
+ account = new Account();
+ account.setId(1);
+ account.setFirstName("Clinton");
+ account.setLastName("Begin");
+ account.setEmailAddress("clinton");
+ account = (Account) sqlMap.queryForObject("dynamicQueryByExample", account);
+ assertAccount1(account);
+
+
+ }
+
+
+ public void testRemappableResults() throws SQLException {
+ Account account;
+
+ account = new Account();
+ account.setId(1);
+ account = (Account) sqlMap.queryForObject("testRemappableResults", new Integer(1));
+
+ assertAccount1(account);
+
+ account = new Account();
+ account.setId(5);
+ account = (Account) sqlMap.queryForObject("testRemappableResults", new Integer(77));
+
+ assertEquals(0, account.getId());
+ assertEquals("Jim", account.getFirstName());
+ }
+
+ public void testIsPropertyAvailable() throws Exception {
+ Map account = new HashMap();
+
+ account.put("id", new Integer(1));
+ account.put("name", "Clinton");
+ account = (Map) sqlMap.queryForObject("selectIfPropertyAvailable", account);
+
+ assertEquals(new Integer(1), account.get("ACC_ID"));
+ assertEquals("Clinton", account.get("ACC_FIRST_NAME"));
+ }
+}