日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

mybatis插入数据后返回自增主键ID详解

發布時間:2023/12/2 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mybatis插入数据后返回自增主键ID详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.場景介紹:

? 開發過程中我們經常性的會用到許多的中間表,用于數據之間的對應和關聯.這個時候我們關聯最多的就是ID,我們在一張表中插入數據后級聯增加到關聯表中.我們熟知的mybatis在插入數據后返回的是插入成功的條數,那么這個時候我們想要得到相應的這條新增數據的ID,該怎么辦呢?

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

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

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

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

在接口映射器中通過注解@Options分別設置參數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中添加操作返回的是記錄數并非記錄主鍵id。因此,如果需要獲取新添加記錄的主鍵值,需要在執行添加操作之后,直接讀取Java對象的主鍵屬性。

Integer rows = sqlSession.getMapper(StuMapper.class).insertOneTest(student); System.out.println("rows = " + rows); // 添加操作返回記錄數 System.out.println("id = " + student.getId()); // 執行添加操作之后通過Java對象獲取主鍵屬性值
添加批量記錄時返回主鍵ID

如果希望執行批量添加并返回各記錄主鍵字段值,只能在xml映射器中實現,在接口映射器中無法做到。

<!-- 批量添加數據,并返回主鍵字段 --> <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>

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

轉載于:https://www.cnblogs.com/charlypage/p/11253610.html

總結

以上是生活随笔為你收集整理的mybatis插入数据后返回自增主键ID详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。