ibatis-user-cs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Rahul Singh ( Anant )" <anantat...@gmail.com>
Subject Re: Creating a DataTable from an IList returned from the data mapper
Date Wed, 19 Jul 2006 19:12:01 GMT
Neat. I like.

On 7/19/06, Shawn Hinsey <Shawn.Hinsey@miva.com> wrote:
>
> Check this out:
>
>                 public DataSet SelectDataSet(string statementName,
> object parameters)
>                 {
>                         DataSet ds = new DataSet();
>
>                         IMappedStatement statement =
> Mapper.GetMappedStatement(statementName);
>
>                         RequestScope scope =
>
> statement.Statement.Sql.GetRequestScope(parameters,
> Mapper.OpenConnection());
>
>                         statement.PreparedCommand.Create
>                                 (scope, Mapper.LocalSession,
> statement.Statement, parameters);
>
>
> Mapper.LocalSession.CreateDataAdapter(scope.IDbCommand).Fill(ds);
>
>                         return ds;
>                 }
>
> > -----Original Message-----
> > From: Ron Grabowski [mailto:rongrabowski@yahoo.com]
> > Sent: Tuesday, July 18, 2006 6:30 PM
> > To: user-cs@ibatis.apache.org
> > Subject: RE: Creating a DataTable from an IList returned from
> > the data mapper
> >
> > Not everything has to be OO. Both the Java and .NET
> > implementations of iBATIS support dictionary objects.
> > DataTables have an advantage over IDictionary with DataViews:
> >
> > http://tinyurl.com/2cvqh
> > http://msdn.microsoft.com/library/default.asp?url=/library/en-
> > us/cpref/html/frlrfsystemdatadatacolumnclassexpressiontopic.asp
> >
> > and their ability to be serialized through a web service.
> >
> > IDictionary/DataTables come in handy in reporting situations
> > where you don't want to / can't create objects for dynamic
> > reports that need a small amount of additional
> > sorting/filtering that IDictionary can't provide. I think
> > such a method would also help iBATIS get its foot in the
> > door. I would love to re-implement sometimes questionable
> > helper classes liks this:
> >
> >  SqlHelper.ExecuteDataTable("SELECT * FROM Users")
> >
> > with ISqlMapper.QueryForDataTable.
> >
> > Another step in iBATIS' evolution may be a generalized Query method:
> >
> >  DataTable dataTable =
> >   (DataTable)sqlMapper.Query(dataTableQuery, "SelectAccountById", 5);
> >
> >  Product[] products =
> >   (Product[])sqlMapper.Query(productArrayQuery,
> > "SelectAccountById", 5);
> >
> > ISqlMapper could be re-implemented this way:
> >
> >  public IList QueryForList(string statement, object parameter)  {
> >   return (IList)Query(queryForList, statement, parameter);  }
> >
> >  public object QueryForObject(string statement, object parameter)  {
> >   return Query(queryForObject, statement, parameter);  }
> >
> > Looking far into the future, maybe ISqlMapper would extend
> > IDataMapper to extend the mapping concept to more than just SQL:
> >
> >  MusicInfo[] musicInfos =
> >   dataMapper.Query(musicInfoQuery, "FindMusic");
> >
> > --- Alexandre Grenier <Alexandre.Grenier@markettools.com> wrote:
> >
> > > Although I understand the situation, I wonder if adding support for
> > > datasets would defeat the purpose of ibatis by breaking
> > down the model
> > > it is promoting.
> > >
> > > My understanding is that ibatis is a base for building a good
> > > "Persistence Ignorance" domain model.
> > >
> > > In the current case you send in a "query" and retrieve
> > "Plain Old CLR
> > > Objects", so the input is aware of persistence, but the
> > output can be
> > > 100% focused on the model.
> > >
> > > In the case you propose, the output being a datatable maintains the
> > > concept of persistence after the fact and is not desirable
> > in a model.
> > >
> > > Maybe that's not your case, but I feel in most cases it may lead to
> > > bad design and in the long run injecting Non-PI features will blur
> > > ibatis'
> > > intention.
> > >
> > >
> > >
> > > One way around this would be to enable the user to provide
> > a mechanism
> > > to process the data and build something else than an IList.
> > >
> > >
> > >
> > > Alex
> >
>



-- 
Rahul Singh
CEO, Anant
http://www.anant.us

Office: 7033723268
Mobile: 7036555652

Mime
View raw message