queryForMap() ordering

View: New views
7 Messages — Rating Filter:   Alert me  

queryForMap() ordering

by George.Francis :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

I've tried to find the doco for this, but havent so far. In iBatis, if I use queryForMap(), the resulting Map ordering (predictably) doesnt follow the order-by clause of the query (it seems to always order by the Key property value). Is there an API-level way to determine the Map sort order, or is it a matter of implementing a Comparator manually?

Re: queryForMap() ordering

by nmaves :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

what is your result class for the sqlmap?  Have you tried to use "java.lang.LinkedHashMap" ?

Nathan

On Wed, Oct 21, 2009 at 12:00 PM, George.Francis <gfrancis1@...> wrote:

I've tried to find the doco for this, but havent so far. In iBatis, if I use
queryForMap(), the resulting Map ordering (predictably) doesnt follow the
order-by clause of the query (it seems to always order by the Key property
value). Is there an API-level way to determine the Map sort order, or is it
a matter of implementing a Comparator manually?
--
View this message in context: http://www.nabble.com/queryForMap%28%29-ordering-tp25997320p25997320.html
Sent from the iBATIS - User - Java mailing list archive at Nabble.com.


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



Re: queryForMap() ordering

by George.Francis :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Sorry if this is obvious, but how do I change the Map implementation returned by getSqlMapClientTemplate().queryForMap(...). At the moment it returns a java.util.HashMap.  

The 'resultMap' attribute of my <select> query refers to the custom domain object mapping I have specified - this is the class used for the values in the HashMap returned from the queryForMap().

I hope that makes sense.

nmaves wrote:
what is your result class for the sqlmap?  Have you tried to use
"java.lang.LinkedHashMap" ?
Nathan

On Wed, Oct 21, 2009 at 12:00 PM, George.Francis <gfrancis1@gmail.com>wrote:

>
> I've tried to find the doco for this, but havent so far. In iBatis, if I
> use
> queryForMap(), the resulting Map ordering (predictably) doesnt follow the
> order-by clause of the query (it seems to always order by the Key property
> value). Is there an API-level way to determine the Map sort order, or is it
> a matter of implementing a Comparator manually?
> --
> View this message in context:
> http://www.nabble.com/queryForMap%28%29-ordering-tp25997320p25997320.html
> Sent from the iBATIS - User - Java mailing list archive at Nabble.com.
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-java-unsubscribe@ibatis.apache.org
> For additional commands, e-mail: user-java-help@ibatis.apache.org
>
>

Re: queryForMap() ordering

by George.Francis :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

I've also tried:
<select id="pcmStatus" resultClass="java.util.LinkedHashMap" remapResults="true" >

but this just makes queryForMap() return a HashMap with LinkedHashMaps as values...


Sorry if this is obvious, but how do I change the Map implementation returned by getSqlMapClientTemplate().queryForMap(...). At the moment it returns a java.util.HashMap.  

The 'resultMap' attribute of my <select> query refers to the custom domain object mapping I have specified - this is the class used for the values in the HashMap returned from the queryForMap().

I hope that makes sense.

nmaves wrote:
what is your result class for the sqlmap?  Have you tried to use
"java.lang.LinkedHashMap" ?
Nathan

On Wed, Oct 21, 2009 at 12:00 PM, George.Francis <gfrancis1@gmail.com>wrote:

>
> I've tried to find the doco for this, but havent so far. In iBatis, if I
> use
> queryForMap(), the resulting Map ordering (predictably) doesnt follow the
> order-by clause of the query (it seems to always order by the Key property
> value). Is there an API-level way to determine the Map sort order, or is it
> a matter of implementing a Comparator manually?
> --
> View this message in context:
> http://www.nabble.com/queryForMap%28%29-ordering-tp25997320p25997320.html
> Sent from the iBATIS - User - Java mailing list archive at Nabble.com.
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-java-unsubscribe@ibatis.apache.org
> For additional commands, e-mail: user-java-help@ibatis.apache.org
>
>


Re: queryForMap() ordering

by nmaves :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Ah I overlooked that you were using queryForMap().  Maybe I can clear this up for you.  If you need a list of ordered objects then use queryForList().  If you want a map based on a key for quick lookup then use queryForMap().  Without knowing what you are trying to query for I dont know which is best for you.

Maybe an example will help.

Imagine that you have a query that returns more then one Person object.  So your result class for your sqlmap will be a Person class.  Now if you want an order list the use queryForList().  If you want a map based on SSN then use queryForMap()

Nathan


On Wed, Oct 21, 2009 at 7:35 PM, George.Francis <gfrancis1@...> wrote:

I've also tried:
<select id="pcmStatus" resultClass="java.util.LinkedHashMap"
remapResults="true" >

but this just makes queryForMap() return a HashMap with LinkedHashMaps as
values...


George.Francis wrote:
>
> Sorry if this is obvious, but how do I change the Map implementation
> returned by getSqlMapClientTemplate().queryForMap(...). At the moment it
> returns a java.util.HashMap.
>
> The 'resultMap' attribute of my <select> query refers to the custom domain
> object mapping I have specified - this is the class used for the values in
> the HashMap returned from the queryForMap().
>
> I hope that makes sense.
>
>
> nmaves wrote:
>>
>> what is your result class for the sqlmap?  Have you tried to use
>> "java.lang.LinkedHashMap" ?
>> Nathan
>>
>> On Wed, Oct 21, 2009 at 12:00 PM, George.Francis
>> <gfrancis1@...>wrote:
>>
>>>
>>> I've tried to find the doco for this, but havent so far. In iBatis, if I
>>> use
>>> queryForMap(), the resulting Map ordering (predictably) doesnt follow
>>> the
>>> order-by clause of the query (it seems to always order by the Key
>>> property
>>> value). Is there an API-level way to determine the Map sort order, or is
>>> it
>>> a matter of implementing a Comparator manually?
>>> --
>>> View this message in context:
>>> http://www.nabble.com/queryForMap%28%29-ordering-tp25997320p25997320.html
>>> Sent from the iBATIS - User - Java mailing list archive at Nabble.com.
>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: user-java-unsubscribe@...
>>> For additional commands, e-mail: user-java-help@...
>>>
>>>
>>
>>
>
>

--
View this message in context: http://www.nabble.com/queryForMap%28%29-ordering-tp25997320p26002779.html
Sent from the iBATIS - User - Java mailing list archive at Nabble.com.


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



Re: queryForMap() ordering

by George.Francis :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Thanks Nathan,
If I use queryForList() I get an ArrayList<Person> which is also not an order-sensitive implementation of List.  I guess what I'm missing is how to get either queryForList()  to return a LinkedList<Person>, or queryForMap() to return a LinkedHashMap<String,Person>

Re: queryForMap() ordering

by George.Francis :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

sorry, I got confused there for a moment.  ArrayList is fine.
Thanks again.