Mybatis中的useGeneratedKeys和keyProperty屬性的作用

參考鏈接:https://blog.csdn.net/fengkungui/article/details/82772302

                    https://www.iteye.com/blog/bugyun-2286145

                   https://blog.csdn.net/weixin_40936211/article/details/90577603

在使用mybatis時,會出現這種需求:

         在mybatis的配置文件中,有個叫keyProperty和useGeneratedKeys的屬性。useGeneratedKeys 參數只針對 insert 語句生效,默認爲 false。當設置爲 true 時,表示如果插入的表以自增列爲主鍵,則允許 JDBC 支持自動生成主鍵,並可將自動生成的主鍵返回。

     當主鍵是自增的情況下,添加一條記錄的同時,其主鍵是不能使用的,但是有時我們需要該主鍵,這時我們該如何處理呢?這時我們只需要在其對應xml中加入以下屬性即可:

        useGeneratedKeys="true"  keyProperty="對應的主鍵的對象"。以確保Notice對象通過mybatis增加到數據庫之後得到的id增長值會被設置在Notice對象上。

<!--   主要是在主鍵是自增的情況下,添加成功後可以直接使用主鍵值,其中keyProperty的值是對象的屬性值不是數據庫表中的字段名-->
    <insert id="saveMsg" parameterType="Notice" useGeneratedKeys="true" keyProperty="msgId">
        insert into notice(msg_type,title,content,rec_time,send_time,user_id,deleted,viewed)
        values(#{msgType,jdbcType=INTEGER},#{title,jdbcType=VARCHAR},#{content,jdbcType=VARCHAR},
               #{recTime,jdbcType=BIGINT},#{sendTime,jdbcType=BIGINT},#{userId,jdbcType=VARCHAR},
               #{deleted,jdbcType=TINYINT},#{viewed,jdbcType=INTEGER})
    </insert>

這樣在之後的java代碼中我們就可以獲取該主鍵對應的對象的屬性值(msgId)。

發佈了95 篇原創文章 · 獲贊 44 · 訪問量 20萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章