让iBatis中的insert回来主键

让iBatis中的insert返回主键
让iBatis中的insert返回主键


<!-- 为了使insert操作能够返回插入记录的id,必须为insert写一个selectKey -->

<!--
   下面是针对Oracle的写法,Oracle没有autoincrement,而是用触发器实现的
   CURRVAL是在触发器中定义的
-->
<insert id="insertRemark" parameterClass="RemarkInfo">
   insert into SGS_REMARK(REMARK) values(#remark#)
   <selectKey resultClass="int" keyProperty="id" >
    SELECT S_SGS_REMARK.CURRVAL AS ID FROM DUAL
   </selectKey>
</insert>

<!-- 下面是针对MySQL的写法 -->
<!--
   <selectKey resultClass="int" keyProperty="id" >
   SELECT @@IDENTITY AS id
   </selectKey>
-->




其中Mysql中也可以这么写(首推方法):

Xml代码
<insert id="tijiaoShensuQiantui" parameterClass="qiandao"> 
    insert into ur_sign_date_shensu   ( `auditing_user_id` ,`shensu_time`,`shensu_note`,`shensu_date_time`,`shensu_state`,`sign_date_id`)  
    values(#auditingUserId#,#shensuTime#,#shensuNote#,#shensuDateTime#,1,#id_PK#);     
        <selectKey resultClass="String"  keyProperty="signId" >   
             SELECT last_insert_id() as signId ;  
        </selectKey>     
</insert> 

<insert id="tijiaoShensuQiantui" parameterClass="qiandao">
    insert into ur_sign_date_shensu   ( `auditing_user_id` ,`shensu_time`,`shensu_note`,`shensu_date_time`,`shensu_state`,`sign_date_id`)
    values(#auditingUserId#,#shensuTime#,#shensuNote#,#shensuDateTime#,1,#id_PK#);  
        <selectKey resultClass="String"  keyProperty="signId" >
             SELECT last_insert_id() as signId ;
        </selectKey>  
</insert>

signId必须是qiandao这个bean里的属性