国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【SpringBoot】Mybatis執(zhí)行insert/update后如何獲得主鍵id

這篇具有很好參考價(jià)值的文章主要介紹了【SpringBoot】Mybatis執(zhí)行insert/update后如何獲得主鍵id。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

一、背景

在業(yè)務(wù)開發(fā)的時(shí)候,由于MyBatis框架的insert語句默認(rèn)是不返回記錄的主鍵值,而是返回插入的記錄條數(shù)的,但是如果業(yè)務(wù)層需要得到插入數(shù)據(jù)的主鍵時(shí)候,可以通過配置的方式來實(shí)現(xiàn)獲取插入數(shù)據(jù)的ID功能。

二、如何解決

方法1、開啟useGeneratedKeys屬性方法

<!--
      useGeneratedKeys="true" 開啟新增主鍵返回功能
      keyProperty="id" user實(shí)體主鍵屬性
      keyColumn="id" user表中主鍵列
  -->
  <insert id="insertUser" parameterType="User" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
     insert into user(username,password) values (#{username},#{password})
  </insert>

方法2、使用<selectKey>和 order="AFTER"方式

  <!--
      keyColumn="id" user表中主鍵列
      keyProperty="id" user實(shí)體主鍵屬性
      resultType="int" user實(shí)體主鍵屬性類型
      order="AFTER" 表示此標(biāo)簽內(nèi)部sql語句在insert執(zhí)行之前(執(zhí)行),還是之后執(zhí)行(執(zhí)行)
        AFTER  之后執(zhí)行【在自增主鍵時(shí)】
        BEFORE 之前執(zhí)行【使用指定主鍵時(shí)】
  -->
  <insert id="insertUser" parameterType="User" >
    <selectKey keyColumn="id" keyProperty="id" resultType="int" order="AFTER">
      SELECT LAST_INSERT_ID()
    </selectKey>
    insert into user(username,password) values(#{username},#{password})
  </insert>

三、Java調(diào)用

在java中調(diào)用時(shí)候,怎么拿到自增主鍵?

錯(cuò)誤拿?。?/p>

int i = tableDataMapper.insertMaster(masterSQL);

System.out.println("主鍵:"+i); //返回的依舊是 0 或者 1 ,代表執(zhí)行成功或失敗

正確拿?。?/p>

tableDataMapper.insertMaster(masterSQL);

System.out.println("主鍵:"+masterSQL.getId()); //因?yàn)樯厦嬲f了,mybatis會(huì)把自增id封裝在你的入?yún)ean的指定字段中,所以應(yīng)該從 入?yún)?get(指定字段) 去獲取

四、注意

1、這兩種方式都僅支持主鍵自增類型的數(shù)據(jù)庫 MySQL 和 SqlServer,Oracle不支持,并且設(shè)置的ID是自增類型的才行;

2、如果使用INSERT一條語句插入多行數(shù)據(jù)時(shí), LAST_INSERT_ID() 只會(huì)返回插入的第一行數(shù)據(jù)時(shí)產(chǎn)生的值。比如我使用INSERT一次插入了 4 條數(shù)據(jù),它們的 id 分別是 1,2,3,4,那么最后返回的ID還是 1 這個(gè)值。文章來源地址http://www.zghlxwxcb.cn/news/detail-503498.html

到了這里,關(guān)于【SpringBoot】Mybatis執(zhí)行insert/update后如何獲得主鍵id的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • myBatis plus 調(diào)用基本方法(insert update.... ) Invalid bound statement (not found)

    直接調(diào)用BaseMapper 或者 是Iservice 里面的方法報(bào)如下錯(cuò),大概率是依賴版本沖突 我的依賴版本如下,解決了這個(gè)問題 “org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)” 錯(cuò)誤通常表示在 MyBatis 中找不到有效的綁定語句。 這個(gè)錯(cuò)誤可能有以下幾個(gè)可能的原因: SQL

    2024年02月13日
    瀏覽(27)
  • SpringBoot中使用@Insert、@Update實(shí)現(xiàn)批量新增、更新

    SpringBoot中使用@Insert、@Update實(shí)現(xiàn)批量新增、更新

    數(shù)據(jù)庫原始表數(shù)據(jù) 數(shù)據(jù)層接口 注意 : @Param(“l(fā)ist”) 引號(hào)中和foreach 中 collection 屬性值必須寫list,否則報(bào)錯(cuò)。item屬性值寫實(shí)體類的類名,首字母必須小寫 接口測試: 由于在Apifox中是沒有對(duì)應(yīng)List的數(shù)據(jù)類型因此需要我們自己手寫body形式 – json例如: 除了使用接口測試工具驗(yàn)證

    2024年02月09日
    瀏覽(20)
  • 如何在Insert插入操作之后,獲取自增主鍵的ID值

    如何在Insert插入操作之后,獲取自增主鍵的ID值

    MyBatis中,在大多數(shù)情況下,我們向數(shù)據(jù)庫中插入一條數(shù)據(jù)之后,并不需要關(guān)注這條新插入數(shù)據(jù)的主鍵ID。我們也知道,正常在DAO中的插入語句雖然可以返回一個(gè)int類型的值,但是這個(gè)值表示的是插入影響的行數(shù),而不是新插入數(shù)據(jù)的主鍵ID。 近期有一個(gè)需求,核心是保存一些

    2024年02月09日
    瀏覽(17)
  • mybatis執(zhí)行自帶update方法遇到的坑

    mybatis執(zhí)行自帶update方法遇到的坑

    ????????項(xiàng)目上需要對(duì)已有oracle數(shù)據(jù)源進(jìn)行兼容改造,兼容doris數(shù)據(jù)源。改造過程中發(fā)現(xiàn),啟動(dòng)項(xiàng)目時(shí)有一個(gè)類內(nèi)部執(zhí)行updateByPrimaryKeySelective時(shí)異常。把日志打印出的SQL復(fù)制到doris數(shù)據(jù)庫執(zhí)行,提示的錯(cuò)誤與項(xiàng)目內(nèi)一致,說明錯(cuò)誤是數(shù)據(jù)庫級(jí)別的,而非項(xiàng)目內(nèi)部問題。錯(cuò)誤

    2024年02月09日
    瀏覽(15)
  • springboot~mybatis中使用selectKey獲取自增主鍵

    springboot~mybatis中使用selectKey獲取自增主鍵

    在mybatis中,我們在insert操作之后,可以獲取到自增主鍵的值,這個(gè)需要我們用到 這個(gè)方法,在使用時(shí)有一個(gè)坑需要注意,一會(huì)兒會(huì)說到。 假設(shè)我們有數(shù)據(jù)表id_offset,然后id是自增主鍵 我們在插入數(shù)據(jù)后,希望得到這個(gè)新插入的主鍵的值 我們不希望通過兩條語句實(shí)現(xiàn),因?yàn)檫@

    2024年02月14日
    瀏覽(24)
  • 【postgresql 基礎(chǔ)入門】UPSERT語句,INSERT違反約束條件時(shí)可以轉(zhuǎn)變?yōu)閁PDATE語句,UPDATE與INSERT的合體

    ? 專欄內(nèi)容 : postgresql內(nèi)核源碼分析 手寫數(shù)據(jù)庫toadb 并發(fā)編程 個(gè)人主頁 :我的主頁 管理社區(qū) :開源數(shù)據(jù)庫 座右銘:天行健,君子以自強(qiáng)不息;地勢坤,君子以厚德載物. 入門準(zhǔn)備 postgrersql基礎(chǔ)架構(gòu) 快速使用 初始化集群 數(shù)據(jù)庫服務(wù)管理 psql客戶端使用 pgAdmin圖形化客戶端

    2024年03月12日
    瀏覽(50)
  • FieldFill.INSERT與FieldFill.UPDATE使用

    首先在bean對(duì)象的class里面對(duì)應(yīng)字段上面加上 或者 如果需要同時(shí)指定新增和修改 則添加 然后添加下配置類

    2024年02月16日
    瀏覽(26)
  • SQL注入_insert&delete&update&selete

    SQL注入_insert&delete&update&selete

    一. SQL注入介紹 1.1 sql注入概念 1.1.1 sql注入的實(shí)質(zhì):數(shù)據(jù)庫將用戶輸入的數(shù)據(jù)當(dāng)作代碼執(zhí)行 1.1.2 sql注入產(chǎn)生的條件 用戶能控制輸入 原本程序要執(zhí)行的代碼,拼接了用戶輸入的數(shù)據(jù)然后進(jìn)行執(zhí)行 1.2 sql注入注入點(diǎn)判斷 1.2.1 判斷是否存在可控變量 抓包判斷 如圖所示,id=1與subm

    2023年04月16日
    瀏覽(24)
  • MySQL修煉手冊7:數(shù)據(jù)修改基礎(chǔ):INSERT、UPDATE、DELETE語句詳解

    在掌握了MySQL數(shù)據(jù)庫的基礎(chǔ)之后,學(xué)習(xí)如何對(duì)數(shù)據(jù)進(jìn)行有效的修改是至關(guān)重要的。本篇博客旨在提供一個(gè)深入的指南,涵蓋了數(shù)據(jù)修改的三大基礎(chǔ)操作:插入(INSERT)、更新(UPDATE)、刪除(DELETE)。為了更好地理解這些概念,我們首先創(chuàng)建一個(gè)示例表“水果表”,然后逐一

    2024年01月17日
    瀏覽(27)
  • MyBatis 中如何執(zhí)行 SQL 語句

    MyBatis 中如何執(zhí)行 SQL 語句

    MyBatis 是一個(gè)基于 Java 的持久層框架,它提供了多種方式來執(zhí)行 SQL 語句,包括直接使用 SqlSession 執(zhí)行、使用映射器(Mapper)執(zhí)行、使用 SqlSessionTemplate 執(zhí)行等。本文將介紹 MyBatis 中常見的 SQL 執(zhí)行方式及其使用方法。 在 MyBatis 中,可以通過 SqlSession 對(duì)象直接執(zhí)行 SQL 語句。S

    2024年02月13日
    瀏覽(16)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包