1. 程式人生 > >關於mybatis插入時如何獲取自增id

關於mybatis插入時如何獲取自增id

一般mybatis插入的話不像hibernate會返回像mysql或者sql server這些關係資料庫中的自增id,那該怎麼樣才能從插入時返回資料庫中的自增id呢?其實mybatis已經為我們做了這樣一個設定,只需要在寫插入語句定義好返回主鍵id對應傳入的java物件中的主鍵屬性,像這樣。

<insertid="insertAuthor"useGeneratedKeys="true"keyProperty="id">
  insert into Author (username, password, email, bio) values
  <foreachitem="item"
collection="list"separator=","> (#{item.username}, #{item.password}, #{item.email}, #{item.bio}) </foreach></insert>
useGeneratedKeys 官方解釋是這樣的(僅對 insert 和 update 有用)這會令 MyBatis 使用 JDBC 的 getGeneratedKeys 方法來取出由資料庫內部生成的主鍵(比如:像 MySQL 和 SQL Server 這樣的關係資料庫管理系統的自動遞增欄位),預設值:false。
所以我們必須把這屬性設為true,然後再設定keyProperty也就是對應我們傳入java物件中的主鍵屬性,最後自增id就會重新賦值該屬性,這樣就可以通過這個物件來獲取我們想要的自增id。

相關推薦

mybatis 在oracle資料庫中插入資料獲取ID sequence序列

在oracle中sequence就是序號,每次取的時候它會自動增加。sequence與表沒有關係。 Create Sequence 首先要有CREATE SEQUENCE或者CREATE ANY SEQUENCE許可權。 建立語句如下: CREATE SEQUEN

mybatis 在oracle資料庫中插入資料獲取ID

就是建立一個SEQUENCE,通過它來獲取自增ID ① 在資料庫中操作: CREATE SEQUENCE CONFIG_KEYWORD_GATHER_SEQ;在XXXMapper.xml中程式碼:&l

mybatis 在oracle資料庫中插入資料獲取ID sequence序列

在oracle中sequence就是序號,每次取的時候它會自動增加。sequence與表沒有關係。 Create Sequence 首先要有CREATE SEQUENCE或者CREATE

mybatis的insert插入獲取id詳解(從controller到mapper)

需求說明:當執行插入操作的時候,其中資料包含兩個模組,分別存放在兩種資料庫表中,拿表A,表B來說。 表A為基本資訊表,其中插入時候有自增id,也就是每新增一條資料後下一個id都會自動加1。 表B為詳情表,其中有個欄位為A_id與A表中的id是一樣的,也就是他們的關聯欄位。 那麼問

Mybatis + MySql 插入獲取的主鍵

MyBatis 3.2.6插入時候獲取自增主鍵方法有二 以MySQL5.5為例: 方法1:     <insert id="insert" parameterType="Person" useGeneratedKeys="true" keyProperty

oracle資料庫在mybatis框架中獲取id

oracle資料庫獲取自增id的方法與mysql不一樣,後者通過設定useGeneratedKeys和keyProperty即可實現。 但是oralce資料庫自增是通過自定義的sequence佇列。所以方法上有所不同。 自增佇列: create or replace t

Entity Framework新增記錄獲取ID

與Entity Framework相伴的日子痛並快樂著。今天和大家分享一下一個快樂,兩個痛苦。 先說快樂的吧。Entity Framework在將資料插入資料庫時,如果主鍵欄位是自增標識列,會將該自增值返回給實體物件對應的屬性。 比如下面新增部落格隨筆至資料庫的示例程

Mybatis插入返回主鍵(selectKey和useGeneratedKeys)

通過selectKey在插入操作前或者操作後獲取key值,做為欄位插入或返回欄位。(此段程式碼獲取的序列值id作為欄位值插入到實體類中返回)  <insert id="insert"> <selectKey keyProperty="id" result

關於mybatis插入如何獲取id

一般mybatis插入的話不像hibernate會返回像mysql或者sql server這些關係資料庫中的自增id,那該怎麼樣才能從插入時返回資料庫中的自增id呢?其實mybatis已經為我們做了這樣一個設定,只需要在寫插入語句定義好返回主鍵id對應傳入的java物件中的

MyBatis 批量插入獲取 id 問題解決

插入 lis foreach myba 如果 .cn bsp collect images 問題: 通過 MyBatis 進行批量插入時,如果我們想獲取插入對象所對應的主鍵 id,做法是直接在 <insert> 標簽中直接加入 useGeneratedKeys

SSM配置Mybatis實現自動獲取插入資料的id至目標物件中

Mybatis配置: <!-- 設定: 將插入資料的主鍵返回並新增到Contents物件中--> <insert id="insert" parameterType="com.c

MySQL資料庫--獲取最新插入書庫的id欄位。

                             資料庫--獲取最新插入資料庫的自增id欄位。 如果我們資料庫表的id屬性是自增的,然後新

mybatis的insert語句獲取id的方法(mySQL)

前提是資料庫表裡已經把id欄位設定成了自增的javabean的定義是這樣的:package test; import java.util.Date; public class Express { private int id; private String order

Mybatis下insert語句後獲取id

目前專案是一個公司平臺的專案重構,專案原來的設計很多不必要。但是也會用到。之前遇到了這種insert後需要知道自增id。然後根據自增id還要去關聯表插入一條資料。我是很不支援這樣的。但是原有設計如此。而且是第二次遇到,第一次沒有記,這次記下來,目前我只負責訂單系

mybatis查詢語句獲取主鍵

第一種方式: 主鍵回填useGeneratedKeys 代表採用JDBC的Statment物件的getGeneratedKeys方法返回主鍵keyProperty 代表將用哪個POJO的屬性去匹配這個主鍵 <!-- 插入記錄 --><insert id="insert" parameterT

tp5 save()儲存後,獲取ID,獲取關聯表中的某值

用過tp5的小夥伴們都知道用save方法新增資料返回的是寫入的記錄數。 但是專案中常常遇到在儲存成功資料後也要獲取這條資料的主鍵id,以方便存到其他表裡用作關聯需要,下面是程式碼示例: //向user表中儲存一條資料 $data = [ 'username'=>'ceshi',

spring Jdbctemplate返回插入記錄的Id

通常情況下我們在程式中往資料庫插入記錄,如果主鍵id是由資料庫負責生成,在插入成功之後都是返回主鍵id方便在插入其它資料時做主鍵關聯,spring Jdbctemplate對這個也是支援的,主要程式碼如下: public int insertTable(LabelForm

spring jpa 獲取id

1.為實體類的id註解 @GeneratedValue(strategy=GenerationType.IDENTITY) 指定id的生成策略 @Id @GeneratedValue(strategy = GenerationType.IDENTITY)

T-SQL:插入並返回ID

SQL SERVER 2000中,有三個比較類似的功能:他們分別是:SCOPE_IDENTITY、IDENT_CURRENT 和 @@IDENTITY,它們都返回插入到 IDENTITY 列中的值。 IDENT_CURRENT 返回為任何會話和任何作用域中的特定表最後生成

mysql獲取id最大值四種方法

1. select max(id) from tablename 2.SELECT LAST_INSERT_ID() 函式 LAST_INSERT_ID 是與table無關的,如果向表a插入資料後,再向表b插入資料,LAST_INSERT_ID會改變。 在多使用者交替插入資料的情況下max(id)顯然不能用