最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

mybatis的insert插入后獲取自增id的方法詳解(從controller到mapper)

 更新時間:2023年10月17日 11:24:56   作者:拄杖盲學(xué)輕聲碼  
這篇文章主要介紹了mybatis的insert插入后獲取自增id的示例代碼,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

需求說明:當(dāng)執(zhí)行插入操作的時候,其中數(shù)據(jù)包含兩個模塊,分別存放在兩種數(shù)據(jù)庫表中,拿表A,表B來說。
表A為基本信息表,其中插入時候有自增id,也就是每新增一條數(shù)據(jù)后下一個id都會自動加1。
表B為詳情表,其中有個字段為A_id與A表中的id是一樣的,也就是他們的關(guān)聯(lián)字段。

那么問題就來了:如果你在新增數(shù)據(jù)的時候,你發(fā)現(xiàn)基本信息和詳情的數(shù)據(jù)都是在一個頁面中,也是同時傳遞到后端接口中,那么我們勢必會有個先后,必須要有A表中的id,那樣的話B表中的數(shù)據(jù)才能夠?qū)?yīng)入庫,不然所屬關(guān)聯(lián)關(guān)系就會亂,這樣也會影響功能,廢話不多說,直接上代碼。

Controller.java代碼模塊(也可以寫在service,看個人習(xí)慣)

//數(shù)據(jù)新增
//先將基本數(shù)據(jù)入庫  
res = service.insertbase(po);
int id =po.getId();
newid = id;
//然后獲取id再將另一部分?jǐn)?shù)據(jù)入另一張表

Mapper.xml代碼模塊

<insert id="insertbase" parameterType="alertmodelPo" useGeneratedKeys="true" keyProperty="po.id">
        insert into A(profile_name,use_flag, create_by, create_date, remark)
        values (#{po.profile_name},'1', #{po.create_by}, now(), #{po.remark})
        <selectKey order="AFTER" resultType="java.lang.Integer" keyProperty="po.id">
            select last_value from A_id_seq
        </selectKey>
 </insert>

keyProperty:默認(rèn)為unset,主要用于設(shè)置getGeneratedKeys方法或selectKey子元素返回值將賦值到領(lǐng)域模型的哪個屬性中。

useGeneratedKeys:取值范圍true|false(默認(rèn)值),設(shè)置是否使用JDBC的。

其中主要是先執(zhí)行插入操作,然后再從表序列中查詢出最新的數(shù)據(jù),也就是last_value,這個地方存在一個情況就是表的數(shù)據(jù)最好不要直接庫操作表插入,不然會影響這個表的序列,當(dāng)然重置表序列等操作可以看我之前寫的博客,里面有詳細(xì)介紹。

操作過程可能遇到的問題:

Id值取不到之情況1:keyProperty的值直接寫id沒有寫po.id。

本質(zhì)原因,因為keyProperty的值是對象的屬性值,不是數(shù)據(jù)表中的字段名。

Id值取不到之情況2:在dao層的入?yún)⑻帥]有聲明@Param(“po”)從而導(dǎo)致po.id的值獲取不到,也就是說這個沒聲名的話mapper里面就不知道你的po是什么值,就會報錯no getter ‘po’……..。

本質(zhì)原因,對@Param的理解不夠。

后話:

*之前網(wǎng)上很多都是沒有下面selectKey的標(biāo)簽,我發(fā)現(xiàn)這個不寫的話會存在版本兼容,報下面這個錯誤,所以沒有用網(wǎng)上的那些方法,上面的我寫的方法反正百試不爽。所以還是用我的方法吧。

Returning autogenerated keys is only supported for 8.2 and later servers.

以上就是mybatis的insert插入后獲取自增id的方法詳解(從controller到mapper)的詳細(xì)內(nèi)容,更多關(guān)于mybatis insert獲取自增id的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 淺談一下單體架構(gòu)的缺點是什么

    淺談一下單體架構(gòu)的缺點是什么

    這篇文章主要介紹了單體架構(gòu)的缺點是什么,通常我們所使用的傳統(tǒng)單體應(yīng)用架構(gòu)都是模塊化的設(shè)計邏輯,程序在編寫完成后會被打包并部署為一個具體的應(yīng)用,而應(yīng)用的格式則依賴于相應(yīng)的應(yīng)用語言和框架,需要的朋友可以參考下
    2023-04-04
  • java webApp異步上傳圖片實現(xiàn)代碼

    java webApp異步上傳圖片實現(xiàn)代碼

    這篇文章主要為大家詳細(xì)介紹了java webApp異步上傳圖片實現(xiàn)代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • Spring關(guān)于@Configuration配置處理流程

    Spring關(guān)于@Configuration配置處理流程

    這篇文章主要介紹了Spring關(guān)于@Configuration配置處理流程,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-06-06
  • JAVA時間存儲類Period和Duration使用詳解

    JAVA時間存儲類Period和Duration使用詳解

    這篇文章主要為大家介紹了JAVA時間存儲類Period和Duration使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • Spring?Boot項目如何優(yōu)雅實現(xiàn)Excel導(dǎo)入與導(dǎo)出功能

    Spring?Boot項目如何優(yōu)雅實現(xiàn)Excel導(dǎo)入與導(dǎo)出功能

    在我們平時工作中經(jīng)常會遇到要操作Excel的功能,比如導(dǎo)出個用戶信息或者訂單信息的Excel報表,下面這篇文章主要給大家介紹了關(guān)于Spring?Boot項目中如何優(yōu)雅實現(xiàn)Excel導(dǎo)入與導(dǎo)出功能的相關(guān)資料,需要的朋友可以參考下
    2022-06-06
  • Java校驗銀行卡是否正確的核心代碼

    Java校驗銀行卡是否正確的核心代碼

    這篇文章主要介紹了Java校驗銀行卡是否正確的核心代碼,需要的朋友可以參考下
    2017-01-01
  • 使用Springboot整合Apollo配置中心

    使用Springboot整合Apollo配置中心

    這篇文章主要介紹了使用Springboot整合Apollo配置中心的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • 基于Spire.Doc for Java實現(xiàn)HTML轉(zhuǎn)PDF的操作方案

    基于Spire.Doc for Java實現(xiàn)HTML轉(zhuǎn)PDF的操作方案

    本文記錄了使用Spire.DocforJava將HTML內(nèi)容轉(zhuǎn)換為PDF文檔的過程,包括環(huán)境準(zhǔn)備、兩種常見的轉(zhuǎn)換場景、進(jìn)階設(shè)置以及注意事項,適用于樣式復(fù)雜度相對可控、排版以文檔流為主的轉(zhuǎn)換需求,需要的朋友可以參考下
    2026-04-04
  • 解決idea創(chuàng)建版本時只有Java21和Java17選項

    解決idea創(chuàng)建版本時只有Java21和Java17選項

    你是否在使用IntelliJ?IDEA創(chuàng)建新項目時遇到了只有Java?21和Java?17的選項?別擔(dān)心,我們的指南將為你提供解決方案,通過簡單的步驟,你將能夠選擇你需要的任何Java版本,繼續(xù)閱讀,讓我們開始吧!
    2024-03-03
  • IntelliJ?IDEA?2021.3?正式發(fā)布之支持遠(yuǎn)程開發(fā)、IDE故障排查等多項優(yōu)化改進(jìn)

    IntelliJ?IDEA?2021.3?正式發(fā)布之支持遠(yuǎn)程開發(fā)、IDE故障排查等多項優(yōu)化改進(jìn)

    IntelliJ?IDEA?2021.3?正式發(fā)布:支持遠(yuǎn)程開發(fā)、IDE故障排查等多項優(yōu)化改進(jìn)問題,在這個版本中的遠(yuǎn)程開發(fā)還不是一個正式版本,而是BETA版,但通過這個BETA版本,也可以體驗IDEA“遠(yuǎn)程開發(fā)”給我們帶來的全新體驗
    2021-12-12

最新評論

石渠县| 乐昌市| 宜都市| 西畴县| 凯里市| 南宫市| 抚宁县| 白山市| 嘉峪关市| 阜新市| 繁昌县| 本溪市| 尼玛县| 汝城县| 全椒县| 博白县| 嘉义县| 彭山县| 安新县| 枣庄市| 玛沁县| 马鞍山市| 江川县| 邹平县| 保山市| 六枝特区| 林州市| 武夷山市| 互助| 寻乌县| 海盐县| 孟连| 科尔| 临夏市| 鄂托克前旗| 通化县| 婺源县| 京山县| 临安市| 桐乡市| 耿马|