Oracle 在插入数据后获取主键ID的解决办法

版权声明:转载请注明出处 https://blog.csdn.net/qq_40162735/article/details/85275562

Mybatis批量插入返回自增主键: 

对于支持生成自增主键的数据库:useGenerateKeys和keyProperty

不支持生成自增主键的数据库:<selectKey>

1、Oracle数据库中创建自增序列

create sequence ARCHIVES_SEQ_ID
start with 1 
increment by 1 
minvalue 1 
nomaxvalue
nocycle

2、mybatis中mapper.xml  (利用 ARCHIVES_SEQ_ID.NEXTVAL 获取插入数据的主键)

<insert id="insert" parameterType="com.scanner.entity.archives" >
    <selectKey resultType="java.lang.Integer"  order="BEFORE" keyProperty="id">
        select ARCHIVES_SEQ_ID.NEXTVAL from DUAL
    </selectKey>
    insert into SYS_ARCHIVES (ID, NAMES, 
      SEX, IDCARDNO, KIND)
    values (#{id,jdbcType=INTEGER} #{names,jdbcType=VARCHAR}, 
      #{sex,jdbcType=VARCHAR}, #{idcardno,jdbcType=VARCHAR}, #{kind,jdbcType=VARCHAR})
</insert>

在插入的时候id字段也要写的,不然触发器会触发两次,导致返回id和表中的id不一致。

猜你喜欢

转载自blog.csdn.net/qq_40162735/article/details/85275562