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

使用mybatis進(jìn)行數(shù)據(jù)插入時(shí)如何返回自增的id

這篇具有很好參考價(jià)值的文章主要介紹了使用mybatis進(jìn)行數(shù)據(jù)插入時(shí)如何返回自增的id。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

具體問(wèn)題

當(dāng)我們存儲(chǔ)數(shù)據(jù)時(shí),有時(shí)候id是選擇讓數(shù)據(jù)庫(kù)自增的 。但前端如果需要當(dāng)前添加數(shù)據(jù)的id時(shí),我們?cè)诖a上就無(wú)法返回了。

解決辦法

在 MyBatis 中,可以通過(guò)配置來(lái)確保數(shù)據(jù)庫(kù)操作成功。具體方式是在 Mapper.xml 文件中使用 useGeneratedKeys 和 keyProperty 屬性來(lái)獲取自增主鍵的值,以判斷插入操作是否成功。

下面是實(shí)現(xiàn)方法:

1、在 Mapper.xml 中的插入操作中,添加 useGeneratedKeys 和 keyProperty 屬性。

<insert id="insertUser" parameterType="com.example.User" useGeneratedKeys="true" keyProperty="id">
    INSERT INTO user(username, password) VALUES(#{username}, #{password})
</insert>

2、在 Java 代碼中,調(diào)用 UserMapper 接口的插入方法時(shí),需要判斷插入是否成功。插入成功后,User 對(duì)象的 id 屬性將被自動(dòng)賦值為插入記錄的主鍵值。

	User user = new User();
	user.setUsername("username");
	user.setPassword("password");
	int result = userMapper.insertUser(user);
	if (result > 0) {
	    System.out.println("插入成功,主鍵為:" + user.getId());
	} else {
	    System.out.println("插入失敗");
	}

在插入操作成功后,user.getId() 返回的就是插入記錄的主鍵值,否則返回的是 null 或 0。因此,通過(guò)判斷 user.getId() 的值是否為 null 或 0 可以判斷插入操作是否成功。

其中useGeneratedKeys 和 keyProperty 是 MyBatis 中用于處理自增主鍵的兩個(gè)重要屬性。

  • useGeneratedKeys 屬性表示是否使用自動(dòng)生成的主鍵。如果該屬性為 true,則表示使用數(shù)據(jù)庫(kù)自動(dòng)生成的主鍵;如果該屬性為 false,則表示不使用自動(dòng)生成的主鍵。默認(rèn)值為 false。
  • keyProperty 屬性表示實(shí)體類(lèi)的屬性名,用于接收自動(dòng)生成的主鍵值。在執(zhí)行插入操作時(shí),如果使用了自動(dòng)生成的主鍵,那么數(shù)據(jù)庫(kù)會(huì)為新插入的記錄自動(dòng)生成一個(gè)主鍵值,這個(gè)值會(huì)被保存到 keyProperty 屬性指定的實(shí)體類(lèi)屬性中。

注意點(diǎn)

需要注意的是,不同的數(shù)據(jù)庫(kù)可能需要不同的配置和語(yǔ)法,需要根據(jù)實(shí)際情況進(jìn)行調(diào)整。

  • Oracle數(shù)據(jù)庫(kù)(跟mysql一樣)
  • SQL Server
    在 SQL Server 數(shù)據(jù)庫(kù)中,使用屬性進(jìn)行自動(dòng)生成主鍵的配置方法稍有不同。需要在 insert 標(biāo)簽中添加 useGeneratedKeys 屬性,將其設(shè)置為 false,同時(shí)在 selectKey 標(biāo)簽中指定自動(dòng)生成主鍵的方式和接收主鍵值的實(shí)體類(lèi)屬性,如下所示:
<insert id="insertUser" parameterType="com.example.User" useGeneratedKeys="false">
    <selectKey keyProperty="id" order="AFTER" resultType="java.lang.Long">
        SELECT @@IDENTITY AS id
    </selectKey>
    INSERT INTO user(username, password) VALUES(#{username}, #{password})
</insert>

在上面的配置中,useGeneratedKeys 屬性被設(shè)置為 false,表示不使用自動(dòng)生成主鍵的方式。而是在 selectKey 標(biāo)簽中使用 @@IDENTITY 函數(shù)獲取自動(dòng)生成的主鍵值,并將其設(shè)置到實(shí)體類(lèi)的 id 屬性中。需要注意的是,在 SQL Server 中,@@IDENTITY 函數(shù)用于獲取最近插入的標(biāo)識(shí)列的值,因此只能在插入后使用。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-524124.html

到了這里,關(guān)于使用mybatis進(jìn)行數(shù)據(jù)插入時(shí)如何返回自增的id的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 如何使用MyBatis進(jìn)行數(shù)據(jù)存儲(chǔ)的加密、解密

    如何使用MyBatis進(jìn)行數(shù)據(jù)存儲(chǔ)的加密、解密

    背景:在大部分的系統(tǒng)中,出于用戶(hù)的隱私安全考慮,都會(huì)對(duì)數(shù)據(jù)庫(kù)內(nèi)容進(jìn)行加密,那么在編寫(xiě)業(yè)務(wù)代碼邏輯時(shí)加密也不太現(xiàn)實(shí)。于是通用的加解密插件就應(yīng)運(yùn)而生,本文將采用mybatis的攔截器作為基礎(chǔ)進(jìn)行實(shí)現(xiàn)。 思路:我們可以通過(guò)mybatis的攔截器進(jìn)行參數(shù)的加密和解密 Ex

    2024年02月12日
    瀏覽(23)
  • mybatis插入后返回主鍵id的三種方式

    mybatis插入后返回主鍵id的三種方式

    第一種:在xml文件,insert標(biāo)簽屬性中,添加useGeneratedKeys和keyProperty,如圖 ? 第二種:在xml文件,添加selectKey標(biāo)簽屬性,各個(gè)屬性值含義:resultType:查詢(xún)結(jié)果的類(lèi)型;keyProperty:把查詢(xún)的值賦給誰(shuí);order:在插入前還是后執(zhí)行,id在insert語(yǔ)句插入之后才會(huì)生成id,所以要在插入之

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

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

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

    2024年02月09日
    瀏覽(17)
  • No Spring環(huán)境Mybatis-Plus批量插入并返回主鍵的兩種方式

    No Spring環(huán)境Mybatis-Plus批量插入并返回主鍵的兩種方式

    批量插入,可以把Mybatis-Plus看作是Mybatis加強(qiáng)版;故Mybatis中的相關(guān)操作都可以在Mybatis-Plus中使用;在mysql數(shù)據(jù)庫(kù)中支持批量插入,所以只要配置useGeneratedKeys和keyProperty就可以批量插入并返回主鍵了。 下面是批量插入的Dao層接口 ? ?一注解方式: ? ? ?直接擼代碼: ? ? ?第二種: XML方

    2024年02月09日
    瀏覽(28)
  • 使用mybatis新增一條數(shù)據(jù)返回新增數(shù)據(jù)的id

    第一種方法 注意事項(xiàng): useGeneratedKeys=\\\"true\\\" 表示給主鍵設(shè)置自增長(zhǎng),keyProperty=\\\"userId\\\" 表示將自增長(zhǎng)后的Id賦值給實(shí)體類(lèi)中的userId字段。 parameterType=\\\"com.icc.domain.User\\\" 這個(gè)屬性指向傳遞的參數(shù)實(shí)體類(lèi) 這里提醒下,insert/insert 中沒(méi)有resultType屬性,不要亂加。 實(shí)體類(lèi)中uerId 要有g(shù)ette

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

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

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

    2024年02月14日
    瀏覽(24)
  • 5.4 如何在Mybatis中使用insert標(biāo)簽并返回主鍵id?-- 教你通用做法

    5.4 如何在Mybatis中使用insert標(biāo)簽并返回主鍵id?-- 教你通用做法

    通過(guò) 《上文》,我們學(xué)會(huì)了XML映射文件Mapper的創(chuàng)建,以及最常用的select標(biāo)簽和resultMap標(biāo)簽,本文主要講解 insert標(biāo)簽 ,用于和insert SQL語(yǔ)句映射,非常簡(jiǎn)單上手,只有兩個(gè)點(diǎn)可以擴(kuò)展講講:一個(gè)點(diǎn)是 insert后返回主鍵id(會(huì)介紹兩種方式) ,另外一個(gè)點(diǎn)是 實(shí)現(xiàn)批量添加 ,原本打算

    2024年02月06日
    瀏覽(19)
  • 問(wèn)題解決:使用Mybatis Plus的Mapper插入達(dá)夢(mèng)數(shù)據(jù)庫(kù)報(bào)“數(shù)據(jù)溢出”錯(cuò)誤

    問(wèn)題解決:使用Mybatis Plus的Mapper插入達(dá)夢(mèng)數(shù)據(jù)庫(kù)報(bào)“數(shù)據(jù)溢出”錯(cuò)誤

    使用Mybatis Plus的Mapper插入達(dá)夢(mèng)數(shù)據(jù)庫(kù)報(bào)“數(shù)據(jù)溢出”錯(cuò)誤 問(wèn)題描述 在進(jìn)行批量插入中,拋出異常為數(shù)據(jù)溢出 插入方法:this.baseMapper.insertBatchSomeColumn() 拋出異常:數(shù)據(jù)溢出 對(duì)失敗的數(shù)據(jù)進(jìn)行循環(huán),嘗試使用單個(gè)插入的方法,同樣拋出異常為數(shù)據(jù)溢出 插入方法:this.baseMapper

    2024年02月07日
    瀏覽(284)
  • MyBatis 在大數(shù)據(jù)量下使用流式查詢(xún)進(jìn)行數(shù)據(jù)同步

    通常的數(shù)據(jù)同步中,如果數(shù)據(jù)量比較少的話(huà)可以直接全量同步,默認(rèn)情況下,完整的檢索結(jié)果集會(huì)將其存儲(chǔ)在內(nèi)存中。在大多數(shù)情況下,這是最有效的操作方式,并且由于 MySQL 網(wǎng)絡(luò)協(xié)議的設(shè)計(jì),因此更易于實(shí)現(xiàn)。但是如果數(shù)據(jù)量很大的話(huà),全量同步需要大量的內(nèi)存,如果內(nèi)存

    2024年02月05日
    瀏覽(27)
  • sqlite插入語(yǔ)句id自增列問(wèn)題

    sqlite給主鍵id設(shè)置AUTOINCREMENT自增在插入數(shù)據(jù)的時(shí)候報(bào)錯(cuò)table has x?columns but x-1 values were supplied 為什么自增列要顯示不提供,sqlite需要提供自增列table ResTools has 7 columns but 6 values were supplied SQL Statement:insert into ResTools values(\\\'管理系統(tǒng)winform+Sqlite\\\',\\\'項(xiàng)目\\\\C#程序設(shè)計(jì)\\\\C#winform項(xiàng)目\\\\管理系

    2024年01月18日
    瀏覽(21)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包