方法共有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...