MyBatis 3.2.6插入时候获取自增主键方法有二mysql
以MySQL5.5为例:sql
方法1:数据库
<insert id="insert" parameterType="Person" useGeneratedKeys="true" keyProperty="id"> insert into person(name,pswd) values(#{name},#{pswd}) </insert>
方法2:oracle
<insert id="insert" parameterType="Person"> <selectKey keyProperty="id" resultType="long"> select LAST_INSERT_ID() </selectKey> insert into person(name,pswd) values(#{name},#{pswd}) </insert>
插入前实体id属性为0; 插入后实体id属性为保存后自增的id;sqlserver
mysql、sqlserver等数据库自己带有主键自增加像auto_increment的功能能够直接使用code
useGeneratedKeys=”true”来实现,好比下面的配置server
<insert id=”add” useGeneratedKeys=”true” keyProperty=”id” parameterType=”Auth”> insert into s_user_auth (id,user_id, user_name) values(#{id},#{userid},#{username}) </insert>
而oracle则不行,oracle主键自增加是经过sequence实现的,因此这种方式就不能够了,须要使用:rem
1.先经过sequence查出来id,再insert配置
<insert id=”add” useGeneratedKeys=”false” keyProperty=”id” parameterType=”Auth”> <selectKey resultType=”String” keyProperty=”id” order=”BEFORE”> select yoursequence.nextval as id from dual </selectKey> insert into s_user_auth (id,user_id, user_name) values(#{id},#{userid},#{username}) </insert>
2.直接insertsequence.nextval,以下select
<insert id=”add” useGeneratedKeys=”false” keyProperty=”id” parameterType=”Auth”> insert into s_user_auth (id,user_id, user_name) values(yoursequence.nextval,# {userid},#{username}) </insert>