巧妙mybatis避免Where 空條件的尷尬

我就廢話不多說了,大家還是直接看代碼吧~

1
2
3
4
5
6
7
<select id="findActiveBlogLike" resultType="Blog">
 SELECT * FROM BLOG
 WHERE
 <if test="state != null">
 state = #{state}
 </if>
</select>

如果state參數爲空時,最終生成SQL語句爲

SELECT * FROM BLOG

WHERE

執行會出錯,當然,你可以在where 後加一個1=1,改成

1
2
3
4
5
6
7
<select id="findActiveBlogLike" resultType="Blog">
 SELECT * FROM BLOG
 WHERE 1=1
 <if test="state != null">
 and state = #{state}
 </if>
</select>

但是這個做法不太“環保”(畢竟引入了一個垃圾條件),其實只要改成<where>...</where>即可

1
2
3
4
5
6
7
8
<select id="findActiveBlogLike" resultType="Blog">
 SELECT * FROM BLOG
 <where>
  <if test="state != null">
   and state = #{state}
  </if>
 </where>
</select>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章