Mysql:
<!-- 自动生成id策略 -->
<insertid="addAccount"useGeneratedKeys="true"keyProperty="id"parameterType="account">
<selectKeykeyProperty="id"order="AFTER"resultType="java.lang.Integer">
select LAST_INSERT_ID()
</selectKey>
insert into account(accountId,status,username,password)
values(#{id},#{status},#{username},#{password})
</insert>
Oracle:
注释:oracle不需要useGeneratedKeys,但序列键(这里如SEQ_TEST),需要预先在oracle里生成。
<insert id="insertAccount"parameterType="account">
<selectKeyresultType="long" keyProperty="id">
SELECT SEQ_TEST.NEXTVAL FROM DUAL
</selectKey>
insert into
account(Id,Username,Password)values(#{id},#{username},#{password})
</insert>
注解:selectKey中order属性的值是不同的:
BEFORE先选择主键,设置keyProperty的值然后执行插入语句;
AFTER是先执行插入语句,然后执行selectKey。