oracle資料庫在mybatis框架中獲取自增id
oracle資料庫獲取自增id的方法與mysql不一樣,後者通過設定useGeneratedKeys和keyProperty即可實現。
但是oralce資料庫自增是通過自定義的sequence佇列。所以方法上有所不同。
自增佇列:
create or replace trigger tib_ar_account before insert on ar_account for each row declare integrity_error exception; errno integer; errmsg char(200); dummy integer; found boolean;
begin -- Column "id" uses sequence Sequence_1 select Sequence_1.NEXTVAL INTO :new.id from dual;
-- Errors handling exception when integrity_error then raise_application_error(errno, errmsg); end;
mapper:
<insert id="insertAccount" parameterType="Account"> <!-- 在插入語句之後獲取當前id --> <selectKey keyProperty="id" resultType="int" order="AFTER"> SELECT Sequence_1.CURRVAL FROM DUAL </selectKey> INSERT INTO AR_ACCOUNT (username, money) values( #{username}, #{money}) </insert>
網上看了很多方法都是在插入之前獲得佇列的下一個id即用了,sequence.nextval,在sql語句中再寫插入id,在我自己的實踐中發現,這樣會導致返回的自增值和資料庫的值不一致!!