ORACLE+MYBATIS插入数据返回自增主键id

在mysql数据库中,因为表的字段可以设置为自增,因此很容易实现插入一条记录的同时返回自增的主键id。但是在oracle中,并不支持主键自增,而是需要创建表的自增序列,不仅如此,还需要在mybatis中如下设置。

  1. 创建表的自增序列
create sequence 序列名称
minvalue 1
maxvalue 99999999
start with 1
increment by 1
cache 20;

其中的cache是指缓存的数量,默认为20,一次性先加载连续的20个id到缓存中,每次新增先从缓存中取。

  1. mybatis设置
<insert id="insert" parameterType="类位置" useGeneratedKeys="true" keyProperty="id">
        <selectKey keyProperty="id" resultType="INTEGER" order="BEFORE">
            select 序列名称.NEXTVAL FROM DUAL
        </selectKey>

        insert into 表名(字段)
        values ()
    </insert>

useGeneratedKeys属性开启返回自增主键的功能,keyProperty指定返回的主键映射到实体类中的字段,selectKey 语句是查询下一个主键id的值,这里的resultType类型一定要和数据库对应好,不然会报错。如上设置后,可以自己测试下,向oracle中新增一条记录时,mapper层方法会返回自增的主键id。