让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的写法 -->
Xml代码
<insert id="Order_insert" parameterClass="com.micromall.dao.order.Order" >
insert into t_order (ORDER_ID, user_ID, SHOP_ID, SHOP_NAME, USER_NAME, FREIGHT, DISCOUNT,
TOTAL_CONFER_FEE, TOTAL_SELL_FEE, STATUS, PAY_TIME, SEND_TIME, QUE_TIME, CLOSE_TIME,
REFUND_APPLY_TIME, REFUND_TIME, REFUND_FEE, REFUND_REASON, REFUND_REMARK, SETTLE_TRADE_NO,
QUE_TRADE_NO, REMARK_SELL, REMARK_SERVICE, CREATE_TIME, CREATE_USER, UPDATE_TIME, UPDATE_USER)
values (#orderId#, #userId#, #shopId#, #shopName#, #userName#, #freight#, #discount#,
#totalConferFee#, #totalSellFee#, #status#, #payTime#, #sendTime#, #queTime#, #closeTime#,
#refundApplyTime#, #refundTime#, #refundFee#, #refundReason#, #refundRemark#, #settleTradeNo#,
#queTradeNo#, #remarkSell#, #remarkService#, #createTime#, #createUser#, #updateTime#,
#updateUser#)
<selectKey resultClass="long" keyProperty="orderId">
select LAST_INSERT_ID()
</selectKey>
</insert>