Awesome Ron!  I was looking for something like this as well for reports.  I
don't really need to loop through and create a list of objects just to loop
through them again to shove them in a report.  I can do that from a
recordset.
I was looking through the code and it looks like
DefaultPreparedCommand.Create should delegate
to DefaultPreparedCommand.CreateCommand to set the request.IDbCommand?  I
can update the code, but thought I would check with you first.

Mike

On Sun, May 31, 2009 at 11:57 AM, Ron Grabowski <rongrabow...@yahoo.com>wrote:

> I don't just want the underlying sql string; I want a fully populated
> IDbCommand (i.e. its Parameters collection filled) based on the parameter
> object that I pass in. IPreparedCommand is a contract for inspecting a
> <statement /> node and applying the parameter object with the intent of
> executing the query inside ibatis and eventually mapping the output. The
> functonality I've added allows someone to go half-way through that process:
> I just want the <statement /> and parameter object processed. I'll choose
> whether or not I want to execute the query or pass it to another execution
> engine. IPreparedCommand requires you to pass in a request scope that is
> typically used during the normal map/execute/map lifecycle. My CreateCommand
> creates the appropriate request scope internally and stops processing when
> it has a complete IDbCommand. This workflow isn't really a standard ibatis
> workflow so I didn't make it part of the interface; you have to call
> DefaultPreparedCommand.CreateCommand yourself.
>
> It can also help with testing the parameter object mapping without actually
> having to execute the query on the database:
>
> <select id="FindProduct">
>  SELECT * FROM Product WHERE ProductId = #value#
> </select>
>
> var preparedCommand = new DefaultPreparedCommand();
> var findProductStatement = modelStore.GetMappedStatement("FindProduct");
> IDbCommand command = preparedCommand.CreateCommand(findProductStatement,
> 42);
>
> Assert.AreEqual(command.Parameters["@param0"].Value, 42);
>
> ------------------------------
> *From:* Sal Bass <salbass...@hotmail.com>
> *To:* user-cs@ibatis.apache.org
> *Sent:* Sunday, May 31, 2009 9:59:25 AM
> *Subject:* RE: Ibatis.Net - A Call to Arms
>
> Ron,
>
> I am still trying to dig my way through all of the Ibatis source to get
> familiar with how everything works. Is the purpose of your code to get
> access at the sql statement that is in the mapping file before it is
> executed?
>
>
>
> ------------------------------
> Date: Sun, 31 May 2009 00:03:40 -0700
> From: rongrabow...@yahoo.com
> Subject: Re: Ibatis.Net - A Call to Arms
> To: user-cs@ibatis.apache.org
>
> I've implemented one of my suggestions:
>
> var preparedCommand = new DefaultPreparedCommand();
> var findProductStatement = modelStore.GetMappedStatement("FindProduct");
> IDbCommand command = preparedCommand.CreateCommand(findProductStatement,
> 42);
>
> That should allow us to write some tests against the dynamic sql generator
> without having to execute a query on a real database.
>
> ------------------------------
> *From:* Ron Grabowski <rongrabow...@yahoo.com>
> *To:* user-cs@ibatis.apache.org
> *Sent:* Thursday, May 28, 2009 12:50:18 AM
> *Subject:* Re: Ibatis.Net - A Call to Arms
>
> I'm still alive and forcing my team to use IBatis.Net :-)
>
> They've commented on the verboseness and requirement of having multiple xml
> config files...things like not being able to use one of the built-in
> DbProviderFactorys strings.
>
> Perhaps merging providers.config within sqlmap.config so there are less
> files.
>
> Fluent interfaces seem to be the new hotness these days. Improve the
> abilitty to configure the mapper without sqlmap.config and providers.config.
>
> Migrate the internal Transaction objects to System.Transaction.
>
> Expand on the demos of using Castle NVelocity to do the dynamic sql ???
>
> Have a way to generate an IDbCommand without actually executing it:
>
>  //
> https://rhino-tools.svn.sourceforge.net/svnroot/rhino-tools/trunk/commons/Rhino.Commons/ToPublic/SqlCommandSet.cs
>  var sqlCommandSet = new SqlCommandSet();
>
>  // lots and lots of products
>  foreach (Product product in products)
>  {
>   sqlCommandSet.Append(dataMapper.CreateCommand("Product.Insert",
> product));
>  }
>
>  // one trip to the database when using ADO.Net 2.0 and Sql Server
>  sqlCommandSet.ExecuteNonQuery();
>
> ------------------------------
> *From:* Sal Bass <salbass...@hotmail.com>
> *To:* user-cs@ibatis.apache.org
> *Sent:* Monday, May 25, 2009 5:07:34 PM
> *Subject:* Ibatis.Net - A Call to Arms
>
> Per Clinton's suggestion, I am making this post to find out if we can keep
> Ibatis.Net going. As we all know, Ibatis fills an important niche and is
> still very relevant. We need people to take charge and to commit time for
> development. So, who's in? If we don't do this there is nothing to keep it
> going.
>
>
>
> ------------------------------
> HotmailĀ® has a new way to see what's up with your friends. Check it out.
>
> ------------------------------
> HotmailĀ® has a new way to see what's up with your friends. Check it 
> out.<http://windowslive.com/Tutorial/Hotmail/WhatsNew?ocid=TXT_TAGLM_WL_HM_Tutorial_WhatsNew1_052009>
>

Reply via email to