1. 程式人生 > >寫完一個更新mapper 總結的教訓和經驗

寫完一個更新mapper 總結的教訓和經驗

前兩天,領導給了我一個任務,寫一個查詢介面和一個更新介面,跟簡單的任務,但是寫了好幾天才寫出來,至於寫的過程就不敘述了,寫完之後感覺很丟人的。

我總結一下寫的知識點和自己的感受

先說一下update sql 有三個沒有關聯的表,裡面有三個相同的欄位,前端把這三個引數傳過來,需要根據其中兩個欄位,查出三個表中對應的記錄 修改另一個欄位,簡單的方式,分別查出記錄,如果有就修改,沒有則跳過。這裡不敘述了。這樣得寫6個mapper方法。

接下來說一下<selectKey>這個標籤

簡單來說這是一個在執行update insert 語句時 之前之後執行的一個select 語句 用於返回一個主鍵id或者返回一條記錄數

<selectKey keyProperty="count" resultType="int" order="BEFORE">
  SELECT count(1) FROM DUAL WHERE ShopID =#{id,jdbcType=VARCHAR}
</selectKey>

keyProperty 是返回給pojo物件的一個屬性 

resultType 返回的型別是int型別 

order 是在執行前還是執行後

<if test="count > 0"></if>   
<if test="count==0"></if>

當符合條件時執行條件 當不符合條件時也要處理  要不然會報錯,我被這個坑 鬱悶了一天。

第二個知識點:

查詢三個無關聯的表 結果合在一起 使用union all 當有查詢條件的時候 要把查詢條件放在條件裡面 這樣效率會高

第三個知識點 mapper 中動態sql

<where>  <choose>  <when><otherwise>  是在choose 內使用