mybatis mysql 主鍵自增加怎麼配置

2021-08-15 09:48:07 字數 1805 閱讀 2741

我用這個解決了:

mybatis進行插入操作時,如果表的主鍵是自增的,針對不同的資料庫相應的操作也不同。基本上經常會遇到的就是 oracle sequece 和 mysql 自增主鍵。主要說明下在mybatis中對於自增主鍵的配置。

1、不返回自增主鍵值:

如果考慮到插入資料的主鍵不作為其他表插入資料的外來鍵使用,可以考慮這種方式。

oracle sequence 配置

1234567test_user

seq_test_user_id.nextval

insert into (id,name,age)         values ( ,#, # ) 

當插入語句如上配置時,那麼針對如下語句

user.id為空,也就是說如上的配置並不能在完成插入操作後將插入時的主鍵值存放到儲存的物件中。

2、mysql自增主鍵配置

由於mysql資料庫中,可以設定表的主鍵為自增,所以對於mysql資料庫在mybatis配置插入語句時,不指定插入id欄位即可。主鍵的自增交由mysql來管理。

1234567test_user

insert into (name,age)        values (#, # )

同樣,針對mysql如此配置mybaits,插入完成後user.id為空。

插入後獲取自增主鍵值:

上述的情況能滿足大部分情況,但有時候我們會遇到類似一對多的那種表結構,在插入多端資料時,需要獲取剛剛儲存了的一段的主鍵。那麼這個時候,上述的配置就無法滿足需要了。為此我們需要使用mybatis提供的來單獨配置針對自增逐漸的處理。

1、oracle sequence 配置:

12345678910test_user

seq_test_user_id.nextval

select from dual          insert into (id,name,age)         values ( #, #, # ) 

當使用了後,在實際的插入操作時,mybatis會執行以下兩句sql:

12select seq_test_user_id.nextval from dual; // 語句1 insert into (id,name,age) values ( ?, ?, ? ); // 語句2

在執行插入 語句2 之前,會先執行 語句1 以獲取當前的id值,然後mybatis使用反射呼叫user物件的setid方法,將 語句1 查詢出的值儲存在user物件中,然後才執行 語句2 這樣就保證了執行完插入後

user.id是有值的。

2、mysql自增主鍵配置

針對於mysql這種自己維護主鍵的資料庫,可以直接使用以下配置在插入後獲取插入主鍵,

12345test_user

insert into ( name, age )         values ( #, # ) 

當然,由於mysql的自增主鍵可以通過sql語句

1select last_insert_id();

來獲取的。因此針對mysql,mybatis也可配置如下:

123456789test_user

select last_insert_id()          insert into (id,name,age)         values ( #, #, # ) 

只不過該中配置需要額外的一條查詢sql

小結當資料插入操作不關心插入後資料的主鍵(唯一標識),那麼建議使用 不返回自增主鍵值 的方式來配置插入語句,這樣可以避免額外的sql開銷.

當執行插入操作後需要立即獲取插入的自增主鍵值,比如一次操作中儲存一對多這種關係的資料,那麼就要使用 插入後獲取自增主鍵值 的方式配置.

mybatis mysql返回插入資料主鍵

工作中有這麼個需求 後邊資料依賴前邊插入資料的主鍵,所以需要插入返回主鍵 當然了,還有更好的方法,直接用mybatis配置關聯表,一次插入多個關聯表,但是這樣做的話,各個業務實體間的耦合度就回公升高,不利於擴充套件。最後,回歸到獲取返回主鍵處理,一般insert語句返回值是插入的條數,但是讓插入語句...

MyBatis MySQL 返回插入的主鍵ID

需求 使用mybatis往mysql資料庫中插入一條記錄後,需要返回該條記錄的自增主鍵值。insert into basic organ buss parent id,buss name,buss alias,status,creater,create date,updater,update dat...

mybatis mysql的新增返回自增長id

insert into t order order no,receiver name,receiver detail address,create time,update time values tips usegeneratedkeys true 表示給主鍵設定自增長 keyproperty id...