mybatis多表新增如何获取主键ID
記錄一下碰到的問題,就當做是筆記吧,防止忘記。在做ssm多表新增的時候,碰到了一個小問題,就是在新增成功一個表的時候我要獲取它的ID,然后用它的ID新增下一個表。
但是,我要怎么做呢?新增成功,再查詢一次?不會吧這么麻煩。后來我想起了有個方法可以在新增的時候獲取它的主鍵id,然后我再百度了一下,打算把它寫下來。
第一種方法,在mapper.xml新增語句中設置useGeneratedKeys參數值為true,keyProperty=“id”
注意這里的id是自增的主鍵id,對于上面的大概意思是:在完成新增后獲取到數據庫自動生成的主鍵id。注意:useGeneratedKeys參數只對insert語句生效,默認為false。
第二種方法,在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的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 控制台查出数据传到layui数据表格却没
- 下一篇: 使用Git前的准备工作