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

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

這篇具有很好參考價值的文章主要介紹了springboot~mybatis中使用selectKey獲取自增主鍵。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

在mybatis中,我們在insert操作之后,可以獲取到自增主鍵的值,這個需要我們用到這個方法,在使用時有一個坑需要注意,一會兒會說到。

  • 假設我們有數據表id_offset,然后id是自增主鍵
  • 我們在插入數據后,希望得到這個新插入的主鍵的值
  • 我們不希望通過兩條語句實現,因為這樣在并發(fā)時會有問題

數據結構

DROP TABLE IF EXISTS `id_offset`;
CREATE TABLE `lawfirm_id_offset`  (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `kgid` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
);

mybatis中的mapper文件

   <insert id="insertIdOffset" parameterType="IdOffset">
        <selectKey resultType="long" keyProperty ="id" order="AFTER">
            SELECT LAST_INSERT_ID()
        </selectKey>
        INSERT INTO lawyer_id_offset (kgid) VALUES (#{kgid})

    </insert>

java中調用它

注意,這里有個坑,獲取自增主鍵,不是獲取mapper的返回值,而是從當前實體中獲取id,這點需要注意。

	@GetMapping("insert")
	public AjaxResult insert() {
		IdOffset idOffset = new IdOffset();
		idOffset.setKgid("ax01");
		idOffsetMapper.inserIdOffset(idOffset );
		return AjaxResult.success(idOffset.getId());
	}

解析后的SQL語句

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

selectKey不起作用的原因

在 MyBatis 中使用 <selectKey> 來獲取自增主鍵值時,有時可能會出現返回 1 的情況。這可能是因為在 MyBatis 的執(zhí)行環(huán)境和命令行中執(zhí)行 SQL 語句的方式有一些差異,導致了這種不同的結果。

下面是一些可能導致此問題的原因和解決方法:

  1. 事務問題: MyBatis 默認是在事務中執(zhí)行 SQL 語句的。如果你在 <insert> 中同時使用了 <selectKey>,確保你的事務配置正確,事務提交之后才能正確地獲取到自增主鍵值。

  2. 數據庫返回值處理問題: MyBatis 在執(zhí)行 <insert> 語句后,會通過 JDBC 獲取數據庫的返回結果。如果數據庫的返回結果不符合預期,可能導致 MyBatis 返回 1。確保數據庫返回的結果和 MyBatis 預期的結果一致。

  3. 數據庫驅動問題: 不同的數據庫驅動可能在處理 <selectKey> 時存在不同的行為。確保使用了與你的數據庫兼容的驅動版本。

  4. 日志輸出: 啟用 MyBatis 的日志輸出,查看生成的 SQL 語句以及執(zhí)行情況,以便進一步分析問題。

  5. 環(huán)境問題: 確保在 MyBatis 中配置了正確的數據庫連接信息,以及其他必要的配置項。

如果你已經排除了上述可能的問題,但仍然無法解決,建議提供更多關于你的 MyBatis 配置、映射文件和代碼的詳細信息,以及在命令行上執(zhí)行 SQL 語句的方式,這樣我才能更準確地幫助你排查問題。文章來源地址http://www.zghlxwxcb.cn/news/detail-634527.html

到了這里,關于springboot~mybatis中使用selectKey獲取自增主鍵的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • mysql如何自定義自增主鍵值,以及所遇到的不生效問題

    mysql如何自定義自增主鍵值,以及所遇到的不生效問題

    最近有一個需求,要求對某些數據的數據庫主鍵id格式化,要求id為(202311080000)的形式去自增,可以在get請求獲取到這些數據時在請求路徑上看到格式化的id,但是之前數據id有大于202311080000數值的,導致自增的主鍵值并沒有生效(即使刪除相關數據) 如何自定義自增主鍵值 第一種通過命

    2024年04月15日
    瀏覽(19)
  • 面試官:MySQL 自增主鍵一定是連續(xù)的嗎?大部分人都會答錯!

    面試官:MySQL 自增主鍵一定是連續(xù)的嗎?大部分人都會答錯!

    MySQL版本:8.0 數據庫表:T (主鍵id,唯一索引c,普通字段d) 如果你的業(yè)務設計依賴于自增主鍵的連續(xù)性,這個設計假設自增主鍵是連續(xù)的。但實際上,這樣的假設是錯的,因為自增主鍵不能保證連續(xù)遞增。 推薦一個開源免費的 Spring Boot 實戰(zhàn)項目: https://github.com/javastacks

    2024年02月06日
    瀏覽(25)
  • mybatis實戰(zhàn):四、insert 用法(普通插入、返回主鍵自增的值)

    1.UserMapper.xml 1.指定特殊數據類型 2.<insert >元素,這個標簽包含如下屬性 ?2. UserMapperTest ?1.只插入一條數據 2.回滾(不寫入數據庫) 3.插入后判斷是否為空(為空/不為空,拋異常) 3.UserMapper 方法一: 使用 JDBC 方式返回主鍵自增的值 ?方法二: 使用 selectKey 返回主鍵的值

    2024年02月07日
    瀏覽(24)
  • 【SpringBoot】Mybatis執(zhí)行insert/update后如何獲得主鍵id

    在業(yè)務開發(fā)的時候,由于MyBatis框架的insert語句默認是不返回記錄的主鍵值,而是返回插入的記錄條數的,但是如果業(yè)務層需要得到插入數據的主鍵時候,可以通過配置的方式來實現獲取插入數據的ID功能。 方法1、開啟useGeneratedKeys屬性方法 方法2、使用selectKey和 order=\\\"AFTER\\\"方式

    2024年02月11日
    瀏覽(24)
  • mysql表主鍵自增過大問題

    mysql表主鍵自增過大問題

    問題及項目環(huán)境 ? 問題 最近在做項目時,發(fā)現我創(chuàng)建的每一個表的主鍵設置自增,在插入數據數據時會出現 自增值過大的問題。 問題展示: 在后端執(zhí)行Basemapper中的insert()方法時,數據庫中的主鍵id字段為下: 且我在對應的實體類的設置為下: ?我們的期望時看到Id = 1,而不是

    2024年02月16日
    瀏覽(16)
  • Hibernate適配DM數據庫主鍵自增配置

    Hibernate適配DM數據庫主鍵自增配置

    hibernate有多種生成主鍵策略,例如assigned、increment、hilo、seqhilo、sequence、identity、native、uuid、guid等方法,其中native由hibernate根據使用的數據庫自行判斷采用identity、hilo、sequence其中一種作為主鍵生成方式,靈活性很強。如果能支持identity則使用identity,如果支持sequence則使用

    2023年04月24日
    瀏覽(23)
  • mysql高并發(fā)下主鍵自增打來的問題

    在一般情況下,在新增領域對象后,都需要獲取對應的主鍵值。使用應用層來維護主鍵,在一定程度上有利于程序性能的優(yōu)化和應用移植性的提高。在采用數據庫自增主鍵的方案里,如果JDBC驅動不能綁定新增記錄對應的主鍵,就需要手工執(zhí)行查詢語句以獲取對應的主鍵值,對

    2024年02月13日
    瀏覽(16)
  • 通過DBeaver 給Postgre SQL表 設置主鍵自增

    通過DBeaver 給Postgre SQL表 設置主鍵自增

    1.創(chuàng)建表 CREATE TABLE public.company ( id int4 NOT NULL , name?text NOT NULL, age int4 NOT NULL, address bpchar(50) NULL, salary float4 NULL, join_date date NULL, CONSTRAINT company_pkey PRIMARY KEY (id) ); 2.插入數據(不傳入id) INSERT INTO public.company (name, age, address, salary, join_date) VALUES(\\\'Kobe\\\', 20, \\\'Lake\\\', 10000, \\\'1996-07-13\\\'); ?

    2024年02月12日
    瀏覽(21)
  • Oracle 數據庫實現主鍵字段自增的方法

    Oracle 數據庫實現主鍵字段自增的方法

    前些天發(fā)現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到網站,這篇文章男女通用,看懂了就去分享給你的碼吧。 在 Oracle 數據庫中,實現主鍵字段的自增功能對于確保數據的唯一性和簡化數據插入操作非常重要。本文將介紹如

    2024年02月12日
    瀏覽(28)
  • 使用mybatis進行數據插入時如何返回自增的id

    當我們存儲數據時,有時候id是選擇讓數據庫自增的 。但前端如果需要當前添加數據的id時,我們在代碼上就無法返回了。 在 MyBatis 中,可以通過配置來確保數據庫操作成功。具體方式是在 Mapper.xml 文件中使用 useGeneratedKeys 和 keyProperty 屬性來獲取自增主鍵的值,以判斷插入操

    2024年02月12日
    瀏覽(21)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領取紅包

二維碼2

領紅包