Mybatis插入記錄獲取返回主鍵的配置方法

2021-10-03 01:13:02 字數 1518 閱讀 7925

方法共有2種:

1. 使用jdbc方式返回主鍵自增的值

在配置insert時使用usegeneratedkeys屬性,這種方法只適用於支援自增主鍵的資料庫,如mysql,對於不支援自增主鍵的資料庫不適用,如oracle。usegeneratedkeys設為true後,mybatis會使用jdbc的getgeneratedkeys方法來取得由資料庫內部生成的主鍵。獲得主鍵的值後賦給keyproperty配置的"id"屬性,當需要設定多個屬性時使用逗號隔開,多個主鍵的還需要設定keycolumn屬性,按順序指定資料庫的列,這裡列的值會與keyproperty配置的屬性一一對應。配置如下:

insert into sys_user(user_name, user_password, user_email, user_info, head_img, create_time) 

values (#, #, #, #, #, sysdate())12

345使用selectkey返回主鍵的值

該方式支援所有資料庫,無論是自增主鍵還是序列主鍵的。配置如下:

insert into sys_user(user_name, user_password, user_email, user_info, head_img, create_time) 

values (#, #, #, #, #, sysdate())

select last_insert_id()12

3456

78910

selectkey標籤的keycolumn、keyproperty和上面的usegeneratedkeys的用法含義相同,這裡的resulttype用於設定返回值的型別。order屬性的設定和使用的資料庫有關。在mysql資料庫中,order屬性設定為after,因為當前記錄的主鍵值在insert語句執行成功後才能獲取到。而在oracle資料庫中,order屬性設定為before,領導為oracle需要先從序列獲取值再把值插入資料庫中。oracle的insert語句主鍵列必須寫上,不然會報主鍵不能為空的錯。

以下是其它支援自增主鍵的資料庫配置selectkey中返回主鍵的sql

資料庫    主鍵sql

db2    values identity_val_local()

mysql    select last_insert_id()

sqlserver    select scope_identity()

cloudscape    values identity_val_local()

derby    values identity_val_local()

hsqldb    call identity()

sybase    select @@identity

db2_mf    select identity_val_local() from sysibm.sysdummy1

informix    select dbinfo(『sqlca.sqlerrd1』) from systables where tabid=1

來自《mybatis從入門到精通》劉增輝 著

MyBatis 獲取插入記錄的 id

現在的專案改用 guns 了,也是乙個很不錯的框架,用起來也感覺很不錯,上手也挺方便的。畢竟對於只是應用層面的知識,也基本上就是看看手冊,熟悉熟悉就可以輕鬆上手了。如果是想要深入,或者刨根問底,那麼就需要有一定的基本功了,比如需要完全熟練掌握 j a 的語法特性,熟悉設計模式 對於我而言,暫時還是達...

mybatis獲取插入後記錄的主鍵

如果有如下情況,在插入資料庫記錄後,想得到插入記錄的主鍵,用以後面的業務 那麼mybatis針對這種情況也提供了相應的支援 不支援批量插入 mysql是原聲自增id 假設自增主鍵的欄位名就為id insert into name,age values 比普通的插入就多了兩個屬性 usegenerat...

Mybatis插入返回主鍵id

記錄一下 mybatis 插入返回主鍵id sql語法 注意 需要新增引數usegeneratedkeys true keyproperty id usegeneratedkeys必須是ture keyproperty對應實體類id 傳值型別為當前對應實體類user insert into t us...