mybatis 插入时返回刚插入记录的主键值
程序员文章站
2022-07-13 17:02:00
...
<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。
下一篇: JAVA BIO与NIO的对比