Mybatis 獲得自動生成主鍵值
介紹
對於某些特殊需求:得到剛剛插入資料的主鍵值,以便對剛剛生成的資料做處理
那麼,如何得到剛插入的主鍵值呢有兩種大的方向。
第一是在資料庫獲得通過自帶方法。在資料插入之後輸入“select @@indentity”通常需要結合儲存過程,比較複雜。
第二是在後臺插入時獲得。這裡我們主要說後臺剛插入時得到主鍵值。
詳細
後臺資料插入時獲得主鍵值也分為兩種情況:支援主鍵自增資料庫和不支援主鍵自增。
一、對於支援自動生成主鍵的資料庫,如Mysql、sqlServer,可以通過 Mybatis元素useGeneratedKeys返回當前插入資料主鍵值到輸入類中。
具體應用
<insert id ="insertTest" useGeneratedKeys="true" keyProperty="id"
parameterType="com.kq.domain.IdentityTest">
insert into identity_test(name)
values(#{name,jdbcType=VARCHAR})
</insert>
當執行此條插入語句以後,實體類IdentityTest中的Id會被當前插入資料的主鍵自動填充。
二、對於不支援自動生成主鍵的資料庫。Oracle、DB2等,可以用元素selectKey 回當前插入資料主鍵值到輸入類中。(同時生成一個自定義的隨機主鍵)
具體應用
<insert id="insertTest" useGeneratedKeys="true" keyProperty="id"
parameterType="com.kq.domain.IdentityTest">
<selectKey keyProperty="id" resultType="String" order="BEFORE">
SELECT REPLACE(UUID(),'-','')
</selectKey>
insert into identity_test(name)
values(#{name,jdbcType=VARCHAR})
</insert>
當執行此條插入語句以後,實體類IdentityTest中的Id也會被當前插入資料的主鍵自動填充。
補充
selectKey 元素描述:
屬性 | 描述 |
---|---|
keyProperty | selectKey 語句結果應該被設定的目標屬性。如果希望得到多個生成的列,也可以是逗號分隔的屬性名稱列表。 |
keyColumn | 匹配屬性的返回結果集中的列名稱。如果希望得到多個生成的列,也可以是逗號分隔的屬性名稱列表。 |
resultType | 結果的型別。MyBatis 通常可以推算出來,但是為了更加確定寫上也不會有什麼問題。MyBatis 允許任何簡單型別用作主鍵的型別,包括字串。如果希望作用於多個生成的列,則可以使用一個包含期望屬性的 Object 或一個 Map。 |
order | 這可以被設定為 BEFORE 或 AFTER。如果設定為 BEFORE,那麼它會首先選擇主鍵,設定 keyProperty 然後執行插入語句。如果設定為 AFTER,那麼先執行插入語句,然後是 selectKey 元素 - 這和像 Oracle 的資料庫相似,在插入語句內部可能有嵌入索引呼叫。 |
statementType | MyBatis 支援 STATEMENT,PREPARED 和 CALLABLE 語句的對映型別,分別代表 PreparedStatement 和 CallableStatement 型別。 |
相關推薦
Mybatis 獲得自動生成主鍵值
介紹 對於某些特殊需求:得到剛剛插入資料的主鍵值,以便對剛剛生成的資料做處理 那麼,如何得到剛插入的主鍵值呢有兩種大的方向。 第一是在資料庫獲得通過自帶方法。在資料插入之後輸入“select @@indentity”通常需要結合儲存過程,比較複雜。 第二
MyBatis 3 自動生成 主鍵 針對不同的資料庫(oracle/sqlserver/mysql)
MyBatis自動生成的主鍵很多資料庫支援自動生成主鍵的資料型別。不過這通常(並不總是)是個私有的特性。SQL Map 通過<insert>的子元素<selectKey>來支援自動生成的鍵值。它同時支援預生成(如Oracle)和後生成兩種型別(如
JDBC自動生成主鍵值
重載 res all ace date exe ++ count ada @Test public void test3(){ Connection conn = null; PreparedStatement prep
Mybatis 自動生成主鍵
介紹 像MySql、Sql Server有自動生成主鍵(遞增),Oracle只能用序列生成,或者UUID 那麼在MyBatis怎麼處理呢,有兩個處理方式,那麼我們接下來看看怎麼處理 編碼
zbb20170928 spring hibernate mysql 保存數據時自動生成 主鍵 設置
ring integer 主鍵 mys unique 技術分享 ner img rate @Id @GeneratedValue @Column(name = "id", unique = true, nullable = false) public In
JPA不能自動生成主鍵
專案使用了別人的資料庫,使用表生成的主鍵。遇到兩個問題: 1.當使用表生成主鍵的策略時,主鍵生成成功,但是執行persist方法沒有任何現象,也沒有生成sql,也可能是沒有執行persist方法。 2.無法使用id自動生成的策略,而使用自己設計的實體時是可以使用id
Mybatis批量insert 返回主鍵值和foreach標籤詳解
Mybatis批量insert 返回主鍵 Mybatis從3.3.1版本開始,支援批量插入後返回主鍵ID。首先對於支援自增主鍵的資料庫使用useGenerateKeys和keyProperty,對於不支援生成自增主鍵的資料庫使用selectKey標籤。類似《MyBatis 返回insert操
關於自動生成主鍵和日期
寫專案的時候經常遇到要自動生成主鍵或一個日期,以前只是寫,現在好好整理一下 產生一個數據庫的主鍵 public static String createId() { return UUID.randomUUID().toString(); } 百度了一
Hibernate儲存資料自動生成主鍵出現奇怪異常Duplicate entry '0' for key 1
今天在寫一塊程式的時候,出現了一個異常資訊,搗鼓了一上午,終於找到了異常原因——不僅僅是簡單的主鍵衝突問題 測試資料庫:MySQL 異常資訊如下: org.hibernate.exception.ConstraintViolationException: could no
oracle插入時如何自動生成主鍵
oracle中自動生成主鍵方式例子如下: 1)先建立表: create table student( sno int not null, sname varchar(20), sex char(4), constraint PK_SNO primary key(sno) ); 2)建立序列: create
Mybatis generator 自動生成程式碼時 ,insert返回主鍵值
mvn mybatis-generator:generate 如果要讓generator自動新增該功能,可以如下配置: <!-- tableName:用於自動生成程式碼的資料庫表;domainObjectName:對應於資料庫表的javaBean類名;不需要生成Ex
Mybatis generator 自動生成程式碼時 ,insert如何返回主鍵值
mvn mybatis-generator:generate 如果要讓generator自動新增該功能,可以如下配置: <!-- tableName:用於自動生成程式碼的資料庫表;domainObjectName:對應於資料庫表的javaBean類名;不需要生成Ex
mybatis+mysql自動生成32位uuid主鍵策略
<insert id="insert" parameterType="com.bd.pojo.Book" > <selectKey keyProperty="id" resultType="String" order="BEFORE"&
六、JDBC--獲取自動生成的主鍵值&處理Blob&資料庫事務處理
【孤立的技術是沒有價值的】,我們這裡只是為了瞭解具體的實現步驟:我們在插入資料的時候,經常會需要獲取我們插入的這一行資料對應的主鍵值。 具體的程式碼實現: /** * 獲取資料庫自動生成的主鍵 */ @Test public void testGetKey
javaWeb_JDBC_JDBC獲取數據庫自動生成的主鍵值
調用 業務 count() 主鍵 tool 取數 student cto execute JDBC_JDBC獲取數據庫自動生成主鍵值 1.意義: 在操作比較復雜的數據庫表以及相關信息的時候,我們需要獲取一條記錄中的主鍵值,以便於別的業務邏輯操作該條記錄,那麽這一個時候
jdbcTemplate獲得資料庫生成的主鍵值
JSONObject obj = new JSONObject(); obj.put("code", transactionTemplate.execute(new TransactionCallback<Integer>() { @Overr
獲取mybaties插入記錄自動增長的主鍵值
rate rec rop bsp gen 獲取 pro body 自動 首先在Mybatis Mapper文件中insert語句中添加屬性“useGeneratedKeys”和“keyProperty”,其中keyProperty是保存主鍵值的屬性。 例如:
mybatis中useGeneratedKeys用法--插入數據庫後獲取主鍵值
數據對比 style unit 方法 註意 char string int dst 前言:今天無意在mapper文件中看到useGeneratedKeys這個詞,好奇就查了下,發現能解決我之前插入有外鍵表數據時,這個外鍵獲取繁瑣的問題,於是學習敲DEMO記錄 在項
mybatis單條/批量插入返回自生成主鍵(列表)
1.插入單條記錄返回自增主鍵id(已驗證) 在insert標籤上加上useGeneratedKeys=”true” keyProperty=”id” keyColumn=”id” <insert id="insert" parameterType="com.freedom.
Mybatis MySQL 獲取自動增長主鍵
有兩種方式第一種:<insert id="insert" parameterType="vo.Category" > <selectKey resultType="java.lang.Integer" order="AFTER" keyPrope