1. 程式人生 > >Oracle 在插入資料後獲取主鍵ID的解決辦法

Oracle 在插入資料後獲取主鍵ID的解決辦法

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不一致。