I meant something closer to this: // general text processing string dynamicText = (string)mappedStatement.Process( velocityHandler, new int[] {5, 6, 9});
--- Chad Humphries <[EMAIL PROTECTED]> wrote: > Sounds like this would be a good extension point as a whole. One > thing stuck out in your message though. > > ======== > // general text processing > string dynamicText = (string)mappedStatement.Process( > dynamicTextHandler, new int[] {5, 6, 9}); > ============ > > The idea that iBatis might handle general text processing (I'm > assuming this was just an example to show various uses that could be) > as a primary duty is a little worrying, when there are many template > processing engines laying about > (velocity/nvelocity/stringtemplate/etc). > > All in all seperating out the two distinct sets of functionality > could > be very useful I agree. If nothing else it could make iBatis useful > to a whole new set of people. > > -Chad > > > > On 2/15/06, Ron Grabowski <[EMAIL PROTECTED]> wrote: > > SqlMappers do two tasks: building/executing dynamic sql and > translating > > the result set into domain objects. It might be useful to expose > more > > of the "building dynamic sql" code to the user: > > > > IDictionary map = new Hashtable(); > > map["StartDate"] = DateTime.Now; > > map["EndDate"] = endDate; > > map["Users"] = new int[] {4, 7, 6, 9, 10}; > > > > IMappedStatement mappedStatement = > > sqlMapper.GetMappedStatement("Calendar.Search"); > > > > // CreateIDbCommand(object parameterObject) > > IDbCommand cmd = mappedStatement.CreateIDbCommand(map); > > > > The returned IDbCommand would have its IDataParameters collection > > populated and could be forwarded off to another framework (the > > Microsoft Enterprise Library DAAB for example). I've haven't used > the > > DAAB in a very long time but from the samples on-line I'd envision > it > > looking something like this: > > > > IDbCommand cmd = generateCommandFromIBatisNet(); > > Database db = DatabaseFactory.CreateDatabase(); > > IDataReader reader = db.ExecuteReader(cmd); > > > > This might also be an entry point for generic data mapping: > > > > // produce some sort of Ldap object that will be executed > > // by another system > > LdapResult result = (LdapResult)mappedStatement.Process( > > ldapHandler, 5); > > > > // hibernate will use the hqlCriteria object in one of its queries > > HqlCriteria hqlCriteria = (HqlCriteria)mappedStatement.Process( > > hibernateCriteriaHandler, new int[] {5, 6, 9}); > > > > // general text processing > > string dynamicText = (string)mappedStatement.Process( > > dynamicTextHandler, new int[] {5, 6, 9}); > > > > Getting back on track, I think this is somewhat possible (long and > > ugly!) today with IBatisNet: > > > > // untested > > > > int parameter = 5; > > > > IMappedStatement mappedStatement = > > sqlMapper.GetMappedStatement("Calendar.Search"); > > > > RequestScope request = > > mappedStatement.Statement.Sql.GetRequestScope( > > parameter, > > sqlMapper.LocalSession); > > > > mappedStatement.PreparedCommand.Create( > > request, > > sqlMapper.LocalSession, > > mappedStatement.Statement, > > parameter); > > > > IDbCommand cmd = request.IDbCommand; > > > > Thoughts, ideas? > > > > - Ron > > >