iBatis取得自动生成的主键

iBatis获得自动生成的主键
大约两种情况:
  • Oracle, IBM DB2使用序列
  • MySQL,MS-SQLServer支持主键自动增长


pre-generated keys (e.g. Oracle)
<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>


pre-generated keys (e.g. MySQL)
<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绑定的,没有多线程问题。可以放心使用。