ibatis-user-java mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Zarar Siddiqi" <zarar.sidd...@utoronto.ca>
Subject Multiple Objects as parameters
Date Tue, 14 Jun 2005 13:43:14 GMT
Multiple Objects as parameters


I've encountered a situation which I am sure most developers
have faced and resolved in their own way when using iBatis.

Consider the following scenario.  We have two tables:


Pretty simple case.  A user has multiple addresses.

It doesn't make sense for the Address object to store a UserId.
So, it looks like:

public class Address {
    private String addressId, street, city, zipCode, state, country;    
    // more methods here

Now, when adding an Address, I also have to store the userId which I
have access to in my Java code but have no clear means of passing it 
in via the SqlMapClient.  So, the work around for me is:

// Get a new address
Address addr = RequestObjectFactory.getAddress(request);

// Copy fields of addr into a map
Map params = PropertyUtils.describe(addr);

// Add userId which is not present in addr
params.put("userId", new Integer(userId));

// Do insert
sqlMapClient.insert("addAddress", params);

The problem with the above code is that it relies on PropertyUtils
which I am assuming does some serious reflection to get the fields
of addr.  This I want to avoid.

Is there a mechanism (or a better workaround) that allows for more 
than one parameter to be passed into a query, in this case addr and userId.

View raw message