Oracle 在插入資料後獲取主鍵ID的解決辦法
阿新 • • 發佈:2019-01-02
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不一致。