selectKey execution order attribute ----------------------------------- Key: IBATIS-277 URL: http://issues.apache.org/jira/browse/IBATIS-277 Project: iBatis for Java Type: Improvement Components: SQL Maps Versions: 2.1.7 Environment: Any Reporter: Jamison
I did some poking around and found that iBatis for .NET has a 'type' attribute for the selectKey element that controls when the selectKey is executed. It would be beneficial to me if this attribute was introduced (possible values pre or post) because it would reduce changing the order of execution changing a property in an included property file instead of a rather painful process that requires a lot of manual intervention. The following code would do it I think, but I have not actually tested it since I don't have an iBatis dev env set up.. please forgive my laziness. Line 301 of com.ibatis.sqlmap.engine.builder.xml.SqlStatementParser: if (selectKeyStatement != null) { Properties attributes = NodeletUtils.parseAttributes(node, vars.properties); String keyType = attributes.getProperty("type", foundTextFirst ? "post" : "pre"); // I think I should throw an exception if it is not pre or post... if (!(keyType.equlas("pre") || keyType.equlas("post"))){ throw new SqlMapException("Error. selectKey type attribute value invalid: " + keyType); } selectKeyStatement.setAfter(keyPropName.equals("post")); } Of course the DTD would need to be changed too: <!ELEMENT selectKey (#PCDATA | include)*> <!ATTLIST selectKey resultClass CDATA #IMPLIED keyProperty CDATA #IMPLIED type CDATA #IMPLIED > It is a truly minute code change and it would save my team an incredible amount of very error-prone work. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira