欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解mybatis插入數(shù)據(jù)后返回自增主鍵ID的問(wèn)題

 更新時(shí)間:2021年07月27日 09:41:13   作者:charlyFeng  
這篇文章主要介紹了mybatis插入數(shù)據(jù)后返回自增主鍵ID詳解,本文通過(guò)場(chǎng)景分析示例代碼相結(jié)合給大家介紹的非常詳細(xì),需要的朋友可以參考下

1.場(chǎng)景介紹:

​開(kāi)發(fā)過(guò)程中我們經(jīng)常性的會(huì)用到許多的中間表,用于數(shù)據(jù)之間的對(duì)應(yīng)和關(guān)聯(lián).這個(gè)時(shí)候我們關(guān)聯(lián)最多的就是ID,我們?cè)谝粡埍碇胁迦霐?shù)據(jù)后級(jí)聯(lián)增加到關(guān)聯(lián)表中.我們熟知的mybatis在插入數(shù)據(jù)后返回的是插入成功的條數(shù),那么這個(gè)時(shí)候我們想要得到相應(yīng)的這條新增數(shù)據(jù)的ID,該怎么辦呢?

2.插入數(shù)據(jù)返回自增主鍵ID方法(一)

在映射器中配置獲取記錄主鍵值xml映射:

在xml中定義useGeneratedKeys為true,返回主鍵id的值,keyProperty和keyColumn分別代表數(shù)據(jù)庫(kù)記錄主鍵字段和java對(duì)象成員屬性名

<!-- 插入數(shù)據(jù):返回記錄主鍵id值 -->
<insert id="insert" useGeneratedKeys="true" keyProperty="id"  keyColumn="id">
		insert  into stu (name,age) values (#{name},#{age})
</insert>

接口映射器

在接口映射器中通過(guò)注解@Options分別設(shè)置參數(shù)useGeneratedKeys,keyProperty,keyColumn值

// 返回主鍵字段id值
@Options(useGeneratedKeys = true, keyProperty = "id", keyColumn = "id")
@Insert("insert  into stu (name,age) values (#{name},#{age})")
void insert(Student stu);

獲取新添加記錄主鍵字段值

需要注意的是,在MyBatis中添加操作返回的是記錄數(shù)并非記錄主鍵id。因此,如果需要獲取新添加記錄的主鍵值,需要在執(zhí)行添加操作之后,直接讀取Java對(duì)象的主鍵屬性。

Integer rows = sqlSession.getMapper(StuMapper.class).insertOneTest(student);
System.out.println("rows = " + rows); // 添加操作返回記錄數(shù)
System.out.println("id = " + student.getId()); // 執(zhí)行添加操作之后通過(guò)Java對(duì)象獲取主鍵屬性值

添加批量記錄時(shí)返回主鍵ID

如果希望執(zhí)行批量添加并返回各記錄主鍵字段值,只能在xml映射器中實(shí)現(xiàn),在接口映射器中無(wú)法做到。

<!-- 批量添加數(shù)據(jù),并返回主鍵字段 -->
<insert id="insert" useGeneratedKeys="true" keyProperty="id">
		insert  into stu (name,age) values
		<foreach collection="list" separator="," item="t">
			(#{t.name},#{t.age})
		</foreach>
</insert>

可以看到,執(zhí)行批量添加并返回記錄主鍵值的xml映射器配置,跟添加單條記錄時(shí)是一致的。不同的地方僅僅是使用了foreach元素構(gòu)建批量添加語(yǔ)句。

到此這篇關(guān)于mybatis插入數(shù)據(jù)后返回自增主鍵ID詳解的文章就介紹到這了,更多相關(guān)mybatis插入數(shù)據(jù)后返回自增主鍵ID詳解內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 關(guān)于Scanner中nextInt()、nextLine()等方法總結(jié)與問(wèn)題解決

    關(guān)于Scanner中nextInt()、nextLine()等方法總結(jié)與問(wèn)題解決

    這篇文章主要介紹了關(guān)于Scanner中nextInt()、nextLine()等方法總結(jié)與問(wèn)題解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。
    2022-11-11
  • Spring Cloud Gateway重試機(jī)制的實(shí)現(xiàn)

    Spring Cloud Gateway重試機(jī)制的實(shí)現(xiàn)

    這篇文章主要介紹了Spring Cloud Gateway重試機(jī)制的實(shí)現(xiàn),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-03-03
  • hibernate-validator如何使用校驗(yàn)框架

    hibernate-validator如何使用校驗(yàn)框架

    高效、合理的使用hibernate-validator校驗(yàn)框架可以提高程序的可讀性,以及減少不必要的代碼邏輯,本文主要介紹了hibernate-validator如何使用校驗(yàn)框架,感興趣的可以了解一下
    2022-04-04
  • SpringBoot實(shí)現(xiàn)Server-Sent Events(SSE)的使用完整指南

    SpringBoot實(shí)現(xiàn)Server-Sent Events(SSE)的使用完整指南

    使用SpringBoot實(shí)現(xiàn)Server-Sent Events(SSE)可以有效處理實(shí)時(shí)數(shù)據(jù)推送需求,具有單向通信、輕量級(jí)和高實(shí)時(shí)性等優(yōu)勢(shì),本文詳細(xì)介紹了在SpringBoot中創(chuàng)建SSE端點(diǎn)的步驟,并通過(guò)代碼示例展示了客戶端如何接收數(shù)據(jù),適用于實(shí)時(shí)通知、數(shù)據(jù)展示和在線聊天等場(chǎng)景
    2024-09-09
  • springboot+thymeleaf+mybatis實(shí)現(xiàn)甘特圖的詳細(xì)過(guò)程

    springboot+thymeleaf+mybatis實(shí)現(xiàn)甘特圖的詳細(xì)過(guò)程

    這篇文章主要介紹了springboot+thymeleaf+mybatis實(shí)現(xiàn)甘特圖的詳細(xì)過(guò)程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-07-07
  • java 后臺(tái)將base64字符串保存為圖片的方法

    java 后臺(tái)將base64字符串保存為圖片的方法

    本篇文章主要介紹了java 后臺(tái)將base64字符串保存為圖片的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-09-09
  • 解決SpringBoot中使用@Transactional注解遇到的問(wèn)題

    解決SpringBoot中使用@Transactional注解遇到的問(wèn)題

    這篇文章主要介紹了SpringBoot中使用@Transactional注解遇到的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • 使用spring配置文件.xml的頭文件

    使用spring配置文件.xml的頭文件

    這篇文章主要介紹了使用spring配置文件.xml的頭文件問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • 在springboot中使用p6spy方式

    在springboot中使用p6spy方式

    這篇文章主要介紹了在springboot中使用p6spy方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • 如何使用BigDecimal實(shí)現(xiàn)Java開(kāi)發(fā)商業(yè)計(jì)算

    如何使用BigDecimal實(shí)現(xiàn)Java開(kāi)發(fā)商業(yè)計(jì)算

    這篇文章主要介紹了如何使用BigDecimal實(shí)現(xiàn)Java開(kāi)發(fā)商業(yè)計(jì)算,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09

最新評(píng)論