大约两种情况:
[list]
[*]Oracle, IBM DB2使用序列
[*]MySQL,MS-SQLServer支持主键自动增长
[/list]
[color=red]pre-generated keys (e.g. Oracle)[/color]
[color=red]pre-generated keys (e.g. MySQL)[/color]
注意:MySQl函数LAST_INSERT_ID()是与connection绑定的,没有多线程问题。可以放心使用。
[list]
[*]Oracle, IBM DB2使用序列
[*]MySQL,MS-SQLServer支持主键自动增长
[/list]
[color=red]pre-generated keys (e.g. Oracle)[/color]
<insert id="insertProduct-ORACLE" parameterClass="com.domain.Product">
<selectKey resultClass="int" keyProperty="ID">
<![CDATA[
SELECT STOCKIDSEQUENCE.NEXTVAL AS ID FROM DUAL
]]>
</selectKey>
<![CDATA[
INSERT INTO PRODUCT (PRD_ID,PRD_DESCRIPTION)
VALUES (#id#,#description#)
]]
</insert>
[color=red]pre-generated keys (e.g. MySQL)[/color]
<insert id="insertProduct-MySQL" parameterClass="com.domain.Product">
insert into PRODUCT (PRD_DESCRIPTION)
values (#description#)
<selectKey resultClass="int" keyProperty="ID">
SELECT LAST_INSERT_ID()
</selectKey>
</insert>
注意:MySQl函数LAST_INSERT_ID()是与connection绑定的,没有多线程问题。可以放心使用。