ibatis-user-java mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Roy Bailey <roy.bai...@odinium.com>
Subject Re: Ibatis3 - select with ResultMapper behavior
Date Thu, 07 Jan 2010 22:43:48 GMT
I started by calling a mapper method onto my select query, which worked 
fine.  Then added a call to that same select query using a custom 
result-mapper, to do filtering, but the result-mapper did not get 
called.  If I don't call the mapper method first then my result-mapper 
is called in the second statement below:

             mapper.selectPersonList()
             session.select("...selectPersonList", null, new 
PersonResultMapper())

The first call you make to a session for a given query will cache the 
result-mapper (a default in the case above) and then ignore any 
subsequent calls parameters.  If I close and re-open a new session 
between the above they both work.

hope this helps...

On 07/01/2010 18:36, Clinton Begin wrote:
> I'm not sure I understand.  Can you provide a few lines of code to demonstrate?
>
> On 2010-01-07, Roy Bailey<roy.bailey@odinium.com>  wrote:
>    
>> Hi, I've been using Ibatis2 for the last couple of years - great job,
>> and thanks.
>>
>> I'm now trying out Ibatis3 and have seen the following behavior:
>>
>> When I call a selectList query with a ResultMapper it works, but when I
>> call it with an SQLSession that has already called this query without a
>> ResultMapper it doesn't.  It looks like the sql-session is caching the
>> default result-mapper on the first call and then ignoring the passed
>> result-mapper on the second call.
>>
>> I can work around this by using different sql-sessions, but thought you
>> might like to know as it had me confused for a time.  If this is correct
>> behavior then it might be as well to throw an exception when the second
>> call with a ResultMapper is executed to tell the user this sql-session
>> already has a mapper.  Alternatively, on the calls with a passed
>> result-mapper, you may be able to keep the original result-mapper in a
>> local variable, overwrite this default with the passed value, perform
>> the query, then restore the original result-mapper.  That way multiple
>> calls with/without result-mappers would continue to work as expected
>> from a single sql-session?
>>
>> regards...
>> Roy
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: user-java-unsubscribe@ibatis.apache.org
>> For additional commands, e-mail: user-java-help@ibatis.apache.org
>>
>>
>>      
>    

---------------------------------------------------------------------
To unsubscribe, e-mail: user-java-unsubscribe@ibatis.apache.org
For additional commands, e-mail: user-java-help@ibatis.apache.org


Mime
View raw message