国产成人精品18p,天天干成人网,无码专区狠狠躁天天躁,美女脱精光隐私扒开免费观看

mybatis 為什么千萬(wàn)不要使用 where 1=1

發(fā)布時(shí)間:2021-07-17 21:51 來(lái)源:腳本之家 閱讀:0 作者:eguid_1 欄目: 編程語(yǔ)言 歡迎投稿:712375056

1.解決方案

下面是mybatis查詢(xún)語(yǔ)句,如果我們這次我們將 “state = ‘ACTIVE'” 設置成動(dòng)態(tài)條件,看看會(huì )發(fā)生什么。

<select id="findActiveBlogLike"
     resultType="Blog">
  SELECT * FROM BLOG
  WHERE
  <if test="state != null">
    state = #{state}
  </if>
  <if test="title != null">
    AND title like #{title}
  </if>
  <if test="author != null and author.name != null">
    AND author_name like #{author.name}
  </if>
</select>

如果沒(méi)有匹配的條件會(huì )怎么樣?最終這條 SQL 會(huì )變成這樣:

SELECT * FROM BLOG
WHERE

這會(huì )導致查詢(xún)失敗。如果匹配的只是第二個(gè)條件又會(huì )怎樣?這條 SQL 會(huì )是這樣:

SELECT * FROM BLOG
WHERE
AND title like ‘someTitle'

這個(gè)查詢(xún)也會(huì )失敗。這個(gè)問(wèn)題不能簡(jiǎn)單地用條件元素來(lái)解決。這個(gè)問(wèn)題是如此的難以解決,以至于解決過(guò)的人不會(huì )再想碰到這種問(wèn)題。

MyBatis 有一個(gè)簡(jiǎn)單且適合大多數場(chǎng)景的解決辦法。而在其他場(chǎng)景中,可以對其進(jìn)行自定義以符合需求。而這,只需要一處簡(jiǎn)單的改動(dòng):

<select id="findActiveBlogLike"
     resultType="Blog">
  SELECT * FROM BLOG
  <where>
    <if test="state != null">
         state = #{state}
    </if>
    <if test="title != null">
        AND title like #{title}
    </if>
    <if test="author != null and author.name != null">
        AND author_name like #{author.name}
    </if>
  </where>
</select>

 where 元素只會(huì )在子元素返回任何內容的情況下才插入 “WHERE” 子句。而且,若子句的開(kāi)頭為 “AND” 或 “OR”,where 元素也會(huì )將它們去除。

2.為什么不能使用1=1

1.會(huì )導致表中的數據索引失效
2.垃圾條件,沒(méi)必要加

3.官方文檔地址


到此這篇關(guān)于mybatis 為什么千萬(wàn)不要使用 where 1=1的文章就介紹到這了,更多相關(guān)mybatis where1=1內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自本網(wǎng)站內容采集于網(wǎng)絡(luò )互聯(lián)網(wǎng)轉載等其它媒體和分享為主,內容觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如侵犯了原作者的版權,請告知一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容,聯(lián)系我們QQ:712375056,同時(shí)歡迎投稿傳遞力量。

日韩精品一区二区午夜成人版| 最爽爱爱高潮免费视频| 6080YYY午夜理论片中无码| 国产亚州精品女人久久久久久| 亚洲精品亚洲人成在线下载| 性色av无码专区一ⅴa亚洲|