You could use Ant to supply the ${schema} replacements for you.. just make sure it doesn't accidentally catch any other "runtime" ${parameters}....
Clinton On Mon, Aug 17, 2009 at 10:28 PM, pczurak<czu...@wsinc.com> wrote: > > Thank you for all of your help! > > I think I will just have 2 sets of XML files, one for Test and one for > production, just have to remember to update or change both when something > changes. > > > > Andy Law wrote: >> >> >> pczurak wrote: >>> >>> I am sorry, I am very new to iBates, I do not know what this means >>> >>> "You'll have to make >>> $schema$ a property of your parameter object. " >>> >>> how do I do this, can you point me to an example? >>> >>> >> >> >> OK. When you hit the iBatis query code, you pass in a 'parameter' object >> to the getObject/getList routine of the SqlMapClient... >> >> e.g. >> >> Object result = this.getSqlMapClient().queryForObject(statementName, >> parameterObject); >> >> >> The SQL statement that corresponds to the 'statementName' is then >> extracted and parsed/prepared/run using values from the parameterObject >> object. >> >> So, if the statement said.... >> >> SELECT name, title, id >> FROM person >> WHERE person_uid = #accession# >> >> then this statement gets prepared into >> >> SELECT name, title, id >> FROM person >> WHERE person_uid = '?' >> >> and gets given the argument that results from either calling >> parameterObject.getAccession() (if parameterObject is a bean) or >> parameterObject.get("accession") (if parameterObject is a Map). >> >> If you try to do that with namespaces, it will fail because the #varName# >> syntax results in an invalid statement when it is prepared >> >> i.e. >> >> SELECT name, title, id >> FROM #namespace#.person >> WHERE person_uid = #accession# >> >> would get prepared into... >> >> SELECT name, title, id >> FROM '?'.person >> WHERE person_uid = '?' >> >> >> which is invalid. >> >> >> iBatis does have another syntax for inserting into statements however >> which uses the $varName$ syntax. >> >> Thus: >> >> i.e. >> >> SELECT name, title, id >> FROM $namespace$.person >> WHERE person_uid = #accession# >> >> could get prepared into a valid statement. >> >> In order for this to work, you need to make your parameterObject return a >> valid reply when sent the message .getNamespace() or .get("namespace") in >> exactly the same way that the accession parameter is filled in. This gets >> called before the statement is prepared, so presuming that your >> parameterObject reports 'freddy' in response to >> parameterObject.getNamespace(), your statement would then be prepared as: >> >> SELECT name, title, id >> FROM freddy.person >> WHERE person_uid = '?' >> >> and then the parameterObject would be asked for the accession argument as >> before. >> >> You should be aware though that this is a "dangerous exercise" as it >> potentially opens your application up to SQL injection attacks. You should >> NEVER use $varName$ insertion without rigorously checking the value being >> inserted. >> >> Hope that helps. >> >> Later, >> >> Andy >> > > -- > View this message in context: > http://www.nabble.com/How-Do-I-Change-Schema-tp24948645p25018289.html > Sent from the iBATIS - User - Java mailing list archive at Nabble.com. > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: user-java-unsubscr...@ibatis.apache.org > For additional commands, e-mail: user-java-h...@ibatis.apache.org > > --------------------------------------------------------------------- To unsubscribe, e-mail: user-java-unsubscr...@ibatis.apache.org For additional commands, e-mail: user-java-h...@ibatis.apache.org