mybatis mapper文件裏的

簡單介紹:翻看之前在學校寫的代碼,發現那時候有一個sql寫的頗有意思,用到了 <set>標籤,和我如今寫的雖然有點差異,可是效果同樣sql

代碼:app

// mapper裏的sql

<update id="updateEvent" parameterType="map">
  update event
  <set>
    <if test="title!=null and title!=''">
      title=#{title},
    </if>
    <if test="event!=null and event!=''">
      event=#{event}
    </if>
  </set>
  where id=#{id}
</update>ide

 

//mapper裏的sql

<update id="updateEvent" parameterType="map">
  update event
    <trim prefix="set" suffixOverrides=",">
      <if test="title!=null and title!=''">
        title=#{title},
      </if>
      <if test="event!=null and event!=''">
        event=#{event},
      </if>
    </trim>
  where id=#{id}
</update>spa

 

解釋屬性,順便再補充幾個經常使用的屬性:code

  • prefix:給trim標籤範圍內的sql語句加上前綴,這個很靈活,好比說常見的:加上where條件 加上左括號 加上set 等等,下邊會給例子的
  • suffix:給trim標籤範圍內的sql語句加上後綴,用法和上邊差很少,他們兩個能夠說是一對,可是也能夠有所不一樣
  • prefixOverrides:去除trim標籤範圍內多餘的前綴內容
  • suffixOverrides:去除trim標籤範圍內多餘的後綴內容,如:suffixOverrides=","就是用來去除trim標籤內sql語句多餘的後綴","
//insert sql

<insert id="insert" parameterType="Contract">
  insert into contract
    <trim prefix="(" suffix=")" suffixOverrides=",">
      <if test="id != null">id,</if>
      <if test="userId != null">user_id,</if>
      <if test="createDate != null">create_date,</if>
    </trim>
    <trim prefix="values (" suffix=")" suffixOverrides=",">
      <if test="id != null">#{id,jdbcType=BIGINT},</if>
      <if test="userId != null">#{userId,jdbcType=BIGINT},</if>
      <if test="createTime != null">#{createDate,jdbcType=TIMESTAMP},</if>
    </trim>
  </insert> blog

//update sql

  update userit

  <trim prefix="set" suffixoverride="," suffix=" where id = #{id} ">
    <if test="name != null and name.length()>0"> name=#{name} , </if>
    <if test="gender != null and gender.length()>0"> gender=#{gender} , </if>
  </trim> event

 

 總結:我我的感受來講,這兩種寫法花費的時間都差很少,可是第二種的可以處理不當心添加的逗號或者其餘,規範性上感受更加好一點吧。class

相關文章
相關標籤/搜索