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

