Why is it a problem to have a code dependency in an "implementation"
class? It is suppossed to be aware of IBatis SQLMap semantics. You
interface over your DAO class should hide the specifics of your
implementation code within your Dao.

Brandon




On Mon, 24 Jan 2005 09:22:49 -0800, Pascal DeMilly
<[EMAIL PROTECTED]> wrote:
> Thanks Larry,
> 
> I tried it and it works. However this still leave some dependencies in
> my DAO code as I have to specify the column names there as in:
> 
> return getSqlMapClientTemplate().queryForMap("getItemNameMap", null, "SKU", 
> "Description");
> 
> How will you do about moving that code into the SqlMap. Should I create
> a custom resultMap with key/value as properties and refer to it in my
> DAO code?
> 
> I am going to give it a try and see what happened.
> 
> Thanks for you help.
> 
> Pascal
> 
> On Mon, 2005-01-24 at 08:44, Larry Meadors wrote:
> > Try executeQueryForMap() instead.
> >
> >
> > On Mon, 24 Jan 2005 08:42:25 -0800, Pascal DeMilly
> > <[EMAIL PROTECTED]> wrote:
> > > Hi,
> > >
> > > I would like to retrieve a Map with whose key is the 1st column of my
> > > query and the value is the 2nd column. For example right now I do:
> > >
> > > <select id="getItemNameMap" resultClass="java.util.HashMap">
> > >         select SKU, Description from Items
> > > </select>
> > >
> > > However this returns a list of maps with the key being the column name
> > > and the value the column value which seems wasteful in term of space (I
> > > am using remoting to retrieve that info).
> > >
> > > I currently solve it by using a custom rowHandler in my DAO as follow:
> > >
> > >     public Map getItemNames () throws DataAccessException {
> > >         final KeyValueHandler rowHandler = new KeyValueHandler ();
> > >         getSqlMapClientTemplate().queryWithRowHandler("getItemNameMap", 
> > > null, rowHandler);
> > >         return rowHandler.getMap();
> > >     }
> > >
> > >     private class KeyValueHandler implements RowHandler {
> > >         final Map map = new HashMap ();
> > >
> > >         public void handleRow(Object valueObject) {
> > >             final Map row = (Map) valueObject;
> > >             map.put (row.get("SKU"), row.get("Description"));
> > >         }
> > >
> > >         public Map getMap () {
> > >             return map;
> > >         }
> > >
> > >     }
> > >
> > > But I would like to move possibly that code out of my DAO code and into
> > > iBatis SqlMap file.
> > >
> > > How could I do that
> > >
> > > TIA
> > >
> > > Pascal
> > >
> > >
> 
>

Reply via email to