在mysql数据库中,因为表的字段可以设置为自增,因此很容易实现插入一条记录的同时返回自增的主键id。但是在oracle中,并不支持主键自增,而是需要创建表的自增序列,不仅如此,还需要在mybatis中如下设置。
- 创建表的自增序列
create sequence 序列名称
minvalue 1
maxvalue 99999999
start with 1
increment by 1
cache 20;
其中的cache是指缓存的数量,默认为20,一次性先加载连续的20个id到缓存中,每次新增先从缓存中取。
- 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。