1. 程式人生 > >oracle資料庫在mybatis框架中獲取自增id

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,在我自己的實踐中發現,這樣會導致返回的自增值和資料庫的值不一致!!