ibatis-user-java mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Christopher Lamey <cla...@localmatters.com>
Subject Re: Stored procedure help.
Date Tue, 12 Feb 2008 21:46:03 GMT
Hello,

The following is from the iBATIS PDF, page 37:

Result Maps can also conveniently populate a Map instance such as HashMap or
TreeMap.  Collections of such objects (e.g. Lists of Maps) can also be
retrieved using the APIs described below (see queryForList()). Map types are
mapped exactly the same way as a JavaBean, but instead of setting JavaBeans
properties, the keys of the Map are set to reference the values for the
corresponding mapped columns.  For example, if we wanted to load the values
of a product quickly into a Map, we could do the following:

<resultMap id=²get-product-result² class=²java.util.HashMap²>
    <result  property=²id² column=²PRD_ID²/>
    <result  property=²code² column=²PRD_CODE²/>
    <result  property=²description² column=²PRD_DESCRIPTION²/>
    <result  property=²suggestedPrice² column=²PRD_SUGGESTED_PRICE²/>
</resultMap> 

In the example above, an instance of HashMap would be created and populated
with the Product data.  The property name attributes (e.g. ³id²) would be
the keys of the HashMap, and the values of the mapped columns would be the
values in the HashMap.

Cheers,
topher

On 2/12/08 8:32 AM, "Craig Tataryn" <craiger@tataryn.net> wrote:

> friendly *bump*
> 
> On 2/11/08, Craig Tataryn <craiger@tataryn.net> wrote:
>> 
>> Hi, relatively new to iBatis and have a question about a stored procedure
>> I need to call that has one IN parameter and several OUT parameters.  The
>> idea is, someone would call this stored proc to return exactly 1 customer
>> from the database.  The IN parameter corresponds to the customer's id, the
>> OUT parameters consist of a bunch of properties on a Customer object as well
>> as an extra STATUS parameter which does not exist on the Customer object,
>> but instead indicates whether a retrieval problem happened (for instance the
>> ID you passed to the stored proc didn't exist in the DB for any customers).
>> 
>> So for instance, given the Customer class:
>> 
>> public class Customer {
>>   private String name;
>>   private String email;
>>   private String gender;
>> }
>> 
>> And a stored proc that looked like this:
>> CREATE OR REPLACE PROCEDURE CUSTOMER_RD
>>     -- read a record from the table CUSTOMER
>> (
>>     CUST_ID IN NUMERIC,
>>     CUST_NAME OUT VARCHAR2,
>>     CUST_EMAIL OUT VARCHAR2,
>>     CUST_GENDER OUT CHAR,
>>     STATUS OUT NUMERIC
>> )
>> .
>> .
>> .
>> 
>> I know how I could code an sqlMap such that each of OUT parameters get's
>> populated into a Map entry, then I would manually iterate through the Map
>> and populate a Customer object (disregarding the STATUS param for the time
>> being), however what I'm hoping to do is instead get a map back from iBatis
>> which looks like so:
>> 
>> {
>>     "customer" => Customer
>>     "status" => int
>> }
>> 
>> Is this possible?  If so, what might the corresponding sqlMap look like?
>> 
>> Thanks
>> 


Mime
View raw message