[ https://issues.apache.org/jira/browse/IBATIS-142?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12571589#action_12571589 ]
Brian Diekelman commented on IBATIS-142: ---------------------------------------- Alright, I guess somebody has to bite the bullet and create a patch for this... how about this: Single Generated Key: Using generated in the 'type' attribute since the other options (pre/post) are implied by generated (which has to be post) <insert id="insertUser" parameterClass="user"> insert into user_profiles(first_name_tx)values(#firstName#) <selectKey resultClass="int" type="generated" keyProperty="id"/> </insert> Multiple Generated Keys: The case of a trigger (or several sql statements if the driver supports it) with multiple generated keys, this would apply them in order (if we got the int[] back with two entries, id=[0], otherId=[1]) <insert id="insertUser" parameterClass="user"> insert into user_profiles(first_name_tx)values(#firstName#) <selectKey resultClass="int" type="generated" keyProperty="id"/> <selectKey resultClass="int" type="generated" keyProperty="otherId"/> </insert> Code changes -------------------- New Classes: - create a com.ibatis.sqlmap.engine.mapping.statement.GeneratedKeyStatement Changes to Existing Files: - com.ibatis.sqlmap.engine.mapping.statement.InsertStatement - added a GeneratedKeyStatment[] field + getters/setters - com.ibatis.engine.builder.xml.SqlStatementParser.parseSelectKey() - add generated key logic, add to insertStatement - com.ibatis.engine.impl.SqlMapExecutorDelegate - line 424, inside insert(SessionScope, String, Object) - add logic to check for selectKeyStatement/generatedKeyStatement - add 'generated' to 'selectKey' in sql-map-2.dtd Outstanding questions to think through: - Throw an exception if we have a selectKey with type 'generated' and no keys are generated? (optional setting?) - Allow a pre/post selectKey *and* a generated selectKey in the same statement? If I get some halfway decent feedback I might be able to get a patch ready over the weekend. If nothing else, hopefully this will leave a blueprint of what to change for the next person if I fail miserably. > JDBC 3 Generated Keys Support > ----------------------------- > > Key: IBATIS-142 > URL: https://issues.apache.org/jira/browse/IBATIS-142 > Project: iBatis for Java > Issue Type: Improvement > Components: SQL Maps > Reporter: Brandon Goodin > Priority: Minor > > public int executeUpdate(String sql,int autoGeneratedKeys) > public boolean execute(String sql,int autoGeneratedKeys) > public ResultSet getGeneratedKeys() > We should provide support for jdbc auto generated keys retrieval. This is > only available in Java 1.4. So, we would have to throw an > UnsupportedFeatureException if 1.3 or earlier was being used. > Brandon -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.