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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

mybatis多表新增如何获取主键ID

發布時間:2023/12/3 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mybatis多表新增如何获取主键ID 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

記錄一下碰到的問題,就當做是筆記吧,防止忘記。在做ssm多表新增的時候,碰到了一個小問題,就是在新增成功一個表的時候我要獲取它的ID,然后用它的ID新增下一個表。
但是,我要怎么做呢?新增成功,再查詢一次?不會吧這么麻煩。后來我想起了有個方法可以在新增的時候獲取它的主鍵id,然后我再百度了一下,打算把它寫下來。
第一種方法,在mapper.xml新增語句中設置useGeneratedKeys參數值為true,keyProperty=“id”
注意這里的id是自增的主鍵id,對于上面的大概意思是:在完成新增后獲取到數據庫自動生成的主鍵id。注意:useGeneratedKeys參數只對insert語句生效,默認為false。

<insert id="insertPrivilege" useGeneratedKeys="true" keyProperty="privilegeid" parameterType="com.gx.vo.studentVo">insert into p_privilege(auditID,PrivilegeAmount,PrivilegeReason) values (#{auditID},#{PrivilegeAmount},#{PrivilegeReason})</insert>

第二種方法,在insert 里添加 selectKey 元素,屬性keyProperty為實體類的屬性id

<insert id="insertPrivilege" parameterType="com.gx.vo.studentVo"><selectKey keyProperty="PrivilegeID" order="AFTER"resultType="java.lang.Integer">SELECT LAST_INSERT_ID()</selectKey>insert into p_privilege(auditID,PrivilegeAmount,PrivilegeReason) values (#{auditID},#{PrivilegeAmount},#{PrivilegeReason})</insert>

這里注意:order在mysql里使用AFTER表示執行完新增語句再執行selectKey元素
如果設置為 BEFORE,那么它會首先選擇主鍵,設置 keyProperty 然后執行插入語句

關于order的小栗子:來源于百度

期望結果:插入用戶并獲得插入后的主鍵ID
下面是配置信息:想要insert 后 返回ID
1、mybatis Mapper.xml
2、打印影響行,和返回主鍵ID
3、結果卻很出乎意料, ID是null, 影響行:是負值
換了各種方式測試。
比如:
(1)order=“BEFORE” selectKey= select last_insert_id(), 結果 id=0, r=-2147482646
(2)order=“BEFORE” selectKey= select 23 ,結果id=23 , r=-2147482646
(3)order = “AFTER” selectkey = select 23 , 結果id=null r=同上

總結

以上是生活随笔為你收集整理的mybatis多表新增如何获取主键ID的全部內容,希望文章能夠幫你解決所遇到的問題。

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