MyBatis中如何獲取剛插入數據的 id


一、MyBatis中如何獲取剛插入數據的 id

情景:

三張表

1、生成訂單 (easybuy_order)

2、生成訂單明細 (easybuy_order_detail)

3、更新商品庫存 (easybuy_product)

在通過調用相應的 DAO 接口方法來實現對三張表的更新操作,並且這三步操作也是前后關聯的,后一步的操作依托於上一步操作的結果,如第一步生成訂單 (即在訂單主表(easybuy_order)新增一條數據)之后需要獲取到新增訂單數據的 id 作為下一步生成訂單明細的 orderId。

在 : orderDetail.setOrderId(order.getId());    一步中  order.getId() 會報空指針錯誤。

 

析:原因是 order.getId() 為空,故報空指針異常

那么在MyBatis 中,當往Mysql  數據庫中插入一條記錄后,如何獲取該條記錄的 id (即自增主鍵值)?

解決方案:在OrderMapper.xml中指定 keyProperty 屬性,代碼如下:

<insert id="add" parameterType="order" 
                    useGeneratedKeys="true" keyProperty="id">
     insert into easybuy_order(userId,loginName,userAddress,createTime)
         values(#{userId},#{loginName},#{userAddress},#{createTime})  
</insert>    

如上所示,我們在 insert 中首先設置 useGenerateKeys="true",然后指定keyProperty="id", id代表插入的Order 對象的主鍵屬性。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM