Mybatis insert方法主鍵回填和自定義

2021-08-19 09:41:59 字數 616 閱讀 2800

在資料庫插入的時候,有很多屬性需要我們自己處理,如主鍵自增字段。

mysql中主鍵根據一定規則生成後,需要我們在插入後去主動獲取,以便後面的操作,mybatis為我們提供了處理的方法。

我們可以在xml檔案中進行如下配置:

insert into t_user(user_name,age) values (#$,#)

這樣我們傳入的user物件無需設定id欄位,mybatis會自動進行設定處理,插入成功後id欄位會回填到user物件中。

實際工作上有時候主鍵的生成規則並不是這麼簡單,比如我們取消t_user的主鍵自增規則。我們的要求是:

如果t_user表沒有資料,我們也要設定主鍵為1,否則就取主鍵最大值加2,來設定新的主鍵。

對此,mybatis也提供了處理方法,使用selectkey元素進行處理

select if(max(id) is null, 1, max(id) + 2) as newid from t_user

insert into t_user(user_name,age) values (#$,#)

這樣我們就可以根據自定義的規則來處理生成主鍵了。

MyBatis insert 返回主鍵的方法

今天使用mybatis時,把資料庫切換成oracle,以前都是db2和mysql。本來以為改個配置檔案就沒問題了,結果發現oracle中建表的的主鍵自增不能像db2和mysql一樣來個identity自增。oracle自增必須得配乙個sequence。造成了配置檔案修改。插入操作 對於自增主鍵的表,...

mybatis insert返回主鍵

使用springboot整合shiro寫demo的時候發現乙個問題,當我在使用mybatis的insert標籤時,adduser usegeneratedkeys true keyproperty userid 插入一點問題也沒有,但是當我們拿到userid的時候永遠是1,因為它返回的是插入成功的數...

MyBatis insert操作返回主鍵

在使用mybatis做持久層時,insert語句預設是不返回記錄的主鍵值,而是返回插入的記錄條數 如果業務層需要得到記錄的主鍵時,可以通過配置的方式來完成這個功能 針對sequence主鍵而言,在執行insert sql前必須指定乙個主鍵值給要插入的記錄,如oracle db2,可以採用如下配置方式...