luobo2ni 发表于 2016-11-28 09:07:22

mybatis 插入时返回刚插入记录的主键值

<insert id="insert" parameterType="cn.***.beans.LogObject" >
<selectKey resultType="java.lang.Integer" order="BEFORE" keyProperty="id">
SELECT LOGS_SEQ.nextval AS ID FROM DUAL
</selectKey>
INSERT INTO S_T_LOGS (
ID,
USER_ID,
USER_NAME,
USER_IP,
OPERATION_TIME,
DESCRIPTION,
RESOURCE_ID)
VALUES (
#{id},
#{userId},
#{userName},
#{userIp},
#{operationTime},
#{description},
#{resourceId})
</insert>

  orcale中。传进来的参数LogObject对象里的id字段就会被赋值成sequence的值。这样就达到返回刚插入记录的主键值的效果。

<insert id="insert" parameterType="cn.***.beans.LogObject" >
<selectKey resultType="java.lang.Integer" order="AFTER" keyProperty="id">
SELECT LAST_INSERT_ID() AS ID
</selectKey>
INSERT INTO S_T_LOGS (
ID,
USER_ID,
USER_NAME,
USER_IP,
OPERATION_TIME,
DESCRIPTION,
RESOURCE_ID)
VALUES (
#{id},
#{userId},
#{userName},
#{userIp},
#{operationTime},
#{description},
#{resourceId})
</insert>

  mysql中。通过LAST_INSERT_ID() 获得刚插入的自动增长的id的值。
  注意:selectKey中order属性的值是不同的,BEFORE先选择主键,设置keyProperty的值然后执行插入语句。
  AFTER是先执行插入语句,然后执行selectKey。
页: [1]
查看完整版本: mybatis 插入时返回刚插入记录的主键值