MyBatis Insert返回主鍵和批量插入
一、 insert元素 屬性詳解
其屬性如下:
parameterType ,入參的全限定類名或類型別名
keyColumn ,設定資料表自動生成的主鍵名。對特定資料庫(如PostgreSQL),若自動生成的主鍵不是第一個欄位則必須設定
keyProperty ,預設值unset,用於設定getGeneratedKeys方法或selectKey子元素返回值將賦值到領域模型的哪個屬性中
useGeneratedKeys ,取值範圍true|false(預設值),設定是否使用JDBC的getGenereatedKeys方法獲取主鍵並賦值到keyProperty設定的領域模型屬性中。MySQL和SQLServer執行auto-generated key field,因此當資料庫設定好自增長主鍵後,可通過JDBC的getGeneratedKeys方法獲取。但像Oralce等不支援auto-generated key field的資料庫就不能用這種方法獲取主鍵了
statementType ,取值範圍STATEMENT,PREPARED(預設值),CALLABLE
flushCache ,取值範圍true(預設值)|false,設定執行該操作後是否會清空二級快取和本地快取
timeout ,預設為unset(依賴jdbc驅動器的設定),設定執行該操作的最大時限,超時將拋異常
二、一般的INSERT操作——返回值為插入的記錄數目
mapper介面程式碼:
/** * 新增學生資訊 * @param student 學生例項 * @return 成功操作的記錄數目 */ int add(EStudent student);
mapper.xml:
<insert id="add" parameterType="EStudent"> insert into TStudent(name, age) values(#{name}, #{age}) </insert
三、執行INSERT操作後獲取記錄主鍵
<insert id="add" parameterType="EStudent" useGeneratedKeys="true" keyProperty="id"> insert into TStudent(name, age) values(#{name}, #{age}) </insert>
四、 selectKey子元素 詳解
作用:在insert元素和update元素中插入查詢語句。
其屬性如下:
keyProperty ,預設值unset,用於設定getGeneratedKeys方法或selectKey子元素返回值將賦值到領域模型的哪個屬性中
resultType ,keyPropety所指向的屬性類全限定類名或類型別名
order屬性 ,取值範圍BEFORE|AFTER,指定是在insert語句前還是後執行selectKey操作
statementType ,取值範圍STATEMENT,PREPARED(預設值),CALLABLE
注意:selectKey操作會將操作查詢結果賦值到insert元素的parameterType的入參例項下對應的屬性中。並提供給insert語句使用
五、批量插入
方式1:
<insert id="add" parameterType="EStudent">
<foreach collection="list" item="item" index="index" separator=";">
INSERT INTO TStudent(name,age) VALUES(#{item.name}, #{item.age})
</foreach>
</insert>
不過上述方式相當語句逐條INSERT語句執行,將出現如下問題:
1. mapper介面的add方法返回值將是最一條INSERT語句的操作成功與否(即0或1),而不是所有INSERT語句的操作成功的總記錄數目
2. 當其中一條不成功時,不會進行整體回滾
解決上述問題可以利用下面的通過方法:
INSERT INTO TStudent(name,age)
<foreach collection="list" item="item" index="index" open="(" close=")" separator="union all">
SELECT #{item.name} as a, #{item.age} as b
</foreach>
相關推薦
MyBatis Insert返回主鍵和批量插入
一、 insert元素 屬性詳解 其屬性如下: parameterType ,入參的全限定類名或類型別名 keyColumn ,設定資料表自動生成的主鍵名。對特定資料庫(如PostgreSQL
mybatis 獲取insert 返回的主鍵 和批量插入insert
mybatis 獲取insert 返回的主鍵 id <insert id="insertSelective" parameterType="com.vip.collection.manager.sms.entity.SmsTask" > insert into s
Mybatis之Insert操作詳解(返回主鍵、批量插入)
一、前言 資料庫操作怎能少了INSERT操作呢?下面記錄MyBatis關於INSERT操作的筆記,以便日後查閱。 二、 insert元素 屬性詳解
mybatis insert 返回主鍵id
mybatis insert 返回主鍵id 一、如果是springMVC框架的話。 前提條件: 需要在ibatis Configuration中設定UseGeneratedKeys為true Configuration cfg = new org.apache.ibati
Mybatis批量insert 返回主鍵值和foreach標籤詳解
Mybatis批量insert 返回主鍵 Mybatis從3.3.1版本開始,支援批量插入後返回主鍵ID。首先對於支援自增主鍵的資料庫使用useGenerateKeys和keyProperty,對於不支援生成自增主鍵的資料庫使用selectKey標籤。類似《MyBatis 返回insert操
mybatis 批量insert 返回主鍵(例項)
轉: https://www.jianshu.com/p/be01aa549fdd mybatis 批量insert 返回主鍵(例項) 狗尾巴草也開花 關注 2017.07.30 23:16* 字數 88 閱讀 949評論
Mybatis generator 自動生成程式碼時 ,insert返回主鍵值
mvn mybatis-generator:generate 如果要讓generator自動新增該功能,可以如下配置: <!-- tableName:用於自動生成程式碼的資料庫表;domainObjectName:對應於資料庫表的javaBean類名;不需要生成Ex
關於 mybatis oracle insert 返回主鍵(uuid)的操作
所謂返回主鍵,並不是說我需要在insert的時候直接返回uuid。實際上是什麼意思呢?比如我在執行一個插入操作,入參物件中並沒有傳入主鍵id,我們需要在mybatis中生成這個主鍵,並且在插入到資料庫中的同時,給我這個入參的主鍵id也賦值。這樣在我執行完inser操作後
記錄 - mybatis @Param引數繫結和批量插入
需求:要在同一個groupId下批量插入單品。 資料庫如下: CREATE TABLE `goods` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '單品id', `url` varchar(300) NOT NULL
mybatis insert 獲取主鍵
根據業務需求,我們常常需要在 insert 插入一條資料後,對剛剛插入的資料進行某種操作;這時就需要獲取新新增的資料的主鍵,如果主鍵是自增的話,重新查詢,比較麻煩;mybatis 提供了一種配置,可以在 insert 執行後獲取到新新增資料的主鍵 配置如下 <i
Mybatis+Mysql返回主鍵
使用MyBatis往MySQL資料庫中插入一條記錄後,成功則返回1,即成功的條數。如果要返回該條記錄的自增主鍵值,在mapper中指定keyProperty屬性,例如: (1) <insert id="insert" useGeneratedKeys="true" k
深入淺出mybatis之返回主鍵ID
目錄 新增記錄後獲取主鍵ID,這是一個很常見的需求,特別是在一次前端呼叫中需要插入多個表的場景。 除了新增單條記錄時獲取主鍵值,有時候可能需要獲取批量新增記錄時各記錄的主鍵值,MyBatis從3.3.1版本開始支援批量新增記錄並返回各記錄主鍵欄位值。 新增單一記錄時返
mybatis單條和批量插入返回插入成功後的主鍵id
有些時候我們在新增記錄成功後希望能直接獲取到該記錄的主鍵id值,而不需要再執行一次查詢操作。在使用mybatis作為ORM元件時,可以很方便地達到這個目的。鑑於mybatis目前已經支援xml配置和註解2種方式,所以分別給予詳細介紹。使用xml配置方式1.xml配置:<!-- 插入資料:返回記錄的id值
Mybatis之MySql批量insert後返回主鍵
app bsp long 需求 values ram value tis pub 需求:使用批量插入後,需要insert之後的每一條記錄的ID 註意:Mybatis3.3.1的版本以後支持批量插入後返回主鍵ID 示例: domin.java: public class U
MyBatis在insert插入操作時返回主鍵ID的配置
很多時候,在向資料庫插入資料時,需要保留插入資料的id,以便進行後續的update操作或者將id存入其他表作為外來鍵。 但是,在預設情況下,insert操作返回的是一個int值,並且不是表示主鍵id,而是表示當前SQL語句影響的行數。。。 接下來,我們看看MyBatis如
Mybatis+Mysql 批量插入的時候返回主鍵ID
<insert id="insertAlarmLinkmanList" useGeneratedKeys="true" keyProperty="alarmLinkmanId" > insert into alarm_linkman (user_name,
Mybatis中批量插入並返回主鍵筆記
1.mapper中的程式碼 int insertBatchUserReturnId(List<User> users); 也可以在形參前面加上@Param("xxxx") xml中的程式碼,collection必須填list型別 <insert id="insert
MyBatis 在insert插入操作時返回主鍵ID的配置
很多時候,在向資料庫插入資料時,需要保留插入資料的id,以便進行後續的update操作或者將id存入其他表作為外來鍵。 但是,在預設情況下,insert操作返回的是一個int值,並且不是表示主鍵i
Mybatis 批量插入返回 主鍵ID
官方修復 https://github.com/mybatis/mybatis-3/pull/547 注:使用時 mapper中的 collection 引數必須為 list,即外部的mapper
mybatis插入insert useGeneratedKeys返回主鍵事務支援
繼上次分享的mybatis插入insert返回註解id後今天和大家分享一個大家遇到的一個小問題,就是mybatis執行insert返回主鍵id時,當在service層的某個方法新增事務時會發現主鍵是返回不了的,如果是這種情況的話請耐心看下去。ok,還是繼續上次使用useGen