mybatis查詢更新用法


查詢更新用法

今天看到mybatis里面有個update更新語句,看到使用了selectKey,一時沒搞懂有什么作用。查閱此作用,才發現這個用法真的很不錯,再此記錄下。

sql 查詢更新寫法

  1. 更新數據
  2. 查詢更新數據

注意:這是2條sql,如果在項目里需要連接2次數據庫

mybatis 更新查詢寫法

<update id="update" parameterType="Object" >
<selectKey keyProperty='id' resultType='int' order='BEFORE'>
    SELECT
    (select id FROM a WHERE
     id = #{id})id
    from DUAL
</selectKey>
UPDATE a
SET  a.a= #{A},
     a.b= #{B}
    WHERE id = #{id}
</update>

解析:

<selectKey keyProperty='id' resultType='int' order='BEFORE'>

此處的 keyProperty=’id’ 是指將查詢出來的id 映射到傳入update 的Object 的id 。類型為int

 SELECT
    (select id FROM a WHERE
     id = #{id})id
    from DUAL

此 SELECT 就是為了獲取 被更新的 Object 的id 外邊包裝一個虛表查詢是當 id = #{id} 查詢不到紀錄時不會報空紀錄,會返回 null ,這個就很關鍵了。

當返回空記錄的時候 mybatis會報錯,說不能轉換成 int 型。
當返回null的時候就會轉換成int 的 0 。不會報錯,代表沒有查到。

優化點:

  1. 減少連接數據庫次數。
  2. 簡單邏輯可以不使用spring事務,達到預期目的。


免責聲明!

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



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