mybatis插入數(shù)據(jù)后如何返回新增數(shù)據(jù)的id值
1、自增主鍵情況下插入數(shù)據(jù)獲取自增主鍵值
mybatis為我們提供了一個(gè)方法,能夠插入數(shù)據(jù)時(shí)獲取自動(dòng)生成的值,并且把取的值賦值給實(shí)體類的某一屬性
設(shè)置方法:
要求:主鍵必須是自增的
<insert id = "insert" useGeneratedKeys = "true" keyProperty = "id"> ? ? SQL語(yǔ)句 </insert>
useGeneratedKeys = true //是否返回自增主鍵值
keyProperty = “xxx” //將值賦給哪個(gè)屬性,這個(gè)屬性是方法參數(shù)中的
此時(shí)就是插入數(shù)據(jù)的實(shí)體類點(diǎn).getId()可以得到
2、主鍵非自增的情況下獲取主鍵值
一般我們使用來實(shí)現(xiàn)。一個(gè)塊中只能有一個(gè)
下面我們了解一下selectKey中的屬性
resultType:這個(gè)我們就不用解釋了,返回類型
order:它有兩個(gè)取值:1、BEFORE在添加之前查詢 2、AFTER在添加之后查詢 //這兩個(gè)都是全大寫
keyProperty:將取值賦值給方法參數(shù),如果方法參數(shù)是實(shí)體類,一般賦值給實(shí)體類的字段
keyColumn:對(duì)應(yīng)表的列名
一個(gè)selectKey中必須要有 resultType,order,keyProperty
after示例:查詢最后一次添加的主鍵
<insert id = "insertEmp"> <selectKey resultType = "integer" order = "AFTER" keyProperty = "eid" > select last_insert_id() //查詢最后一次添加的主鍵,mysql函數(shù) </selectKey> insert into dept(id,deptname) values(#{id},#{deptname}) </insert>
before示例:假設(shè)Id不是自增長(zhǎng),我們希望在insert之前獲取mysql的UUID添加到數(shù)據(jù)表作為主鍵Id
<insert id = "insertDept"> <selectKey resultType = "string" order = "BEFORE" keyProperty = "id"> select uuid() as id </selectKey> insert into dept(id,name) values(#{id},#{name}) </insert>
3、keyColumn作用
問題定義:有時(shí)候我們希望keyProperty返回的個(gè)數(shù)超過1的時(shí)候,能不能插入數(shù)據(jù)的時(shí)候返回多個(gè)值
1、把selectKey的結(jié)果賦值給keyProperty的各個(gè)屬性
2、賦值規(guī)則:keyProperty和keColumn的列數(shù)相對(duì)應(yīng):1對(duì)1,2對(duì)2…
<insert id="xxx"> <selectKey resultType="com.entity.Dept" order="BEFORE" keyProperty="id,name" keyColumn="cid,cname"> select cid,cname from Category limit 1; </selectKey> insert into dept(id,name) values (#{id},#{name}) </insert> <!-- 代碼解釋:從Category中查詢出cid,cname 賦值在方法參數(shù)中,然后添加到dept表-->
總結(jié)
到此這篇關(guān)于mybatis插入數(shù)據(jù)后如何返回新增數(shù)據(jù)id值的文章就介紹到這了,更多相關(guān)mybatis返回新增數(shù)據(jù)id值內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java Annotation注解相關(guān)原理代碼總結(jié)
這篇文章主要介紹了Java Annotation注解相關(guān)原理代碼總結(jié),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07淺析Java中String與StringBuffer拼接的區(qū)別
String拼接會(huì)創(chuàng)建一個(gè)新的String對(duì)象,存儲(chǔ)拼接后的字符串,StringBuffer拼接是直接在本身拼接,會(huì)即時(shí)刷新。下面通過本文給大家介紹Java中String與StringBuffer拼接的區(qū)別,感興趣的朋友一起看看吧2017-06-06feign調(diào)用第三方接口,編碼定義GBK,響應(yīng)中文亂碼處理方式
這篇文章主要介紹了feign調(diào)用第三方接口,編碼定義GBK,響應(yīng)中文亂碼處理方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01Spring Boot應(yīng)用配置常用相關(guān)視圖解析器詳解
這篇文章主要給大家介紹了關(guān)于Spring Boot應(yīng)用配置常用相關(guān)視圖解析器的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-12-12Maven項(xiàng)目引用第三方j(luò)ar包找不到類ClassNotFoundException
這篇文章主要為大家介紹了Maven項(xiàng)目引用第三方j(luò)ar包找不到類ClassNotFoundException解決及原因分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07java實(shí)現(xiàn)CSV文件導(dǎo)入與導(dǎo)出功能
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)CSV文件導(dǎo)入與導(dǎo)出,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-08-08Spring Boot集成Thymeleaf模板引擎的完整步驟
這篇文章主要給大家介紹了關(guān)于Spring Boot集成Thymeleaf模板引擎的完整步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-02-02SpringBoot多環(huán)境配置及配置文件分類實(shí)例詳解
這篇文章主要介紹了SpringBoot多環(huán)境配置及配置文件分類,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-10-10