ibatis-user-java mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Ilya Boyandin <Ilya.Boyan...@fh-joanneum.at>
Subject Re: JavaBean and Map parameters
Date Tue, 04 Sep 2007 11:34:18 GMT

Thank you, now everything is clear :)

Best regards
Ilya

Larry Meadors wrote:
> Heh, I think I wrote that part. :-)
>
> You can't reliably refer to an *anonymous* inner class by name (hence
> the anonymous part - IIRC, they are assigned names by location
> MyClass$1, MyClass$2, etc), so you can't safely put the name in your
> mapped statement, so iBATIS doesn't do that load time checking
> (because it doesn't know the parameter class name).
>
> For load time checking to work, the parameter class name has to be
> associated with the mapped statement (either as an explicit parameter
> map, or a parameterClass attribute).
>
> Larry
>
>
> On 9/3/07, Ilya Boyandin <Ilya.Boyandin@fh-joanneum.at> wrote:
>   
>> Hi Larry,
>>
>> Larry Meadors wrote:
>>     
>>> I don't know about the performance - a hashmap is pretty fast for
>>> retrieval. (FYI: the constructor you use there will cause slower
>>> performance - the default would use more memory, but be faster - using
>>> 3 or 4 as the parameter might be better, read the javadocs on that
>>> one.)
>>>
>>>       
>> Oh sure, I forgot about the .75 load factor. Thanks for telling me this!
>> I agree in this case it's better not to use the parameter at all.
>>
>>     
>>> The parameter checking is an interesting idea - I'm just not sure that
>>> it makes it much less error prone - in both cases, you need to type
>>> (or paste) the names.
>>>
>>>       
>> It's not my idea, actually. I found it in the section "JavaBean and Map
>> parameters" of "iBatis in Action". It sais:
>> "If you create a parameter map with a bean and attempt to refer to a
>> property that does not exist, you will get an immediate failure when the
>> parameter map is loaded." I tested it now with the anonymous parameter
>> class I cited before and it doesn't seem to work as described:  the
>> "There is no READABLE property named" exception is thrown only when the
>> query is called, not when the map is loaded. I think I got something
>> wrong again :)
>>
>> Regards
>> Ilya
>>
>>
>>     
>>> On 9/3/07, Ilya Boyandin <Ilya.Boyandin@fh-joanneum.at> wrote:
>>>
>>>       
>>>> Thanks, Larry!
>>>>
>>>> but could you tell me why? I thought using an anonymous class has an
>>>> important advantage: it allows loading-time parameter check. Also I
>>>> think it should be faster than using HashMap. Isn't it true?
>>>>
>>>> Ilya
>>>>
>>>> Larry Meadors wrote:
>>>>
>>>>         
>>>>> Well, they should both do the same thing...I'd use the map. :)
>>>>>
>>>>> Larry
>>>>>
>>>>>
>>>>> On 8/31/07, Ilya Boyandin <Ilya.Boyandin@fh-joanneum.at> wrote:
>>>>>
>>>>>
>>>>>           
>>>>>> Hello all,
>>>>>>
>>>>>> what should I prefer, this:
>>>>>>
>>>>>> return getSqlMapClientTemplate().queryForList("listEvaluationPlans",
new
>>>>>> Object() {
>>>>>>     long getPersonId() { return personId; }
>>>>>>     String getLang() { return lang; }
>>>>>> });
>>>>>>
>>>>>> or this:
>>>>>>
>>>>>> final Map<String, Object> params = new HashMap<String, Object>(2);
>>>>>> params.put("personId", personId);
>>>>>> params.put("lang", lang);
>>>>>> return getSqlMapClientTemplate().queryForList("listEvaluationPlans",
>>>>>> params);
>>>>>>
>>>>>> Thanks in advance
>>>>>> Ilya



FH JOANNEUM Gesellschaft mbH
Rechtsform/Legal form: GmbH
Firmenbuchgericht/Court of registry: Landesgericht für ZRS Graz
Firmenbuchnummer/Company registration: FN 125888 f
DVR: 0813559
UID-Nr.: ATU 42361001

Mime
View raw message