欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

mybatis 為什么千萬不要使用 where 1=1

 更新時(shí)間:2021年05月01日 09:10:58   作者:eguid_1  
這篇文章主要介紹了mybatis 為什么千萬不要使用 where 1=1,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

1.解決方案

下面是mybatis查詢語句,如果我們這次我們將 “state = ‘ACTIVE'” 設(shè)置成動(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>

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

SELECT * FROM BLOG
WHERE

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

SELECT * FROM BLOG
WHERE
AND title like ‘someTitle'

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

MyBatis 有一個(gè)簡(jiǎn)單且適合大多數(shù)場(chǎng)景的解決辦法。而在其他場(chǎng)景中,可以對(duì)其進(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ì)在子元素返回任何內(nèi)容的情況下才插入 “WHERE” 子句。而且,若子句的開頭為 “AND” 或 “OR”,where 元素也會(huì)將它們?nèi)コ?/p>

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

1.會(huì)導(dǎo)致表中的數(shù)據(jù)索引失效
2.垃圾條件,沒必要加

3.官方文檔地址

mybatis官網(wǎng)地址

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

相關(guān)文章

  • java實(shí)現(xiàn)上傳文件到FTP

    java實(shí)現(xiàn)上傳文件到FTP

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)上傳文件到FTP,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • Mybatis-Plus接口BaseMapper與Services使用詳解

    Mybatis-Plus接口BaseMapper與Services使用詳解

    這篇文章主要為大家介紹了Mybatis-Plus接口BaseMapper與Services使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • macOS上使用gperftools定位Java內(nèi)存泄漏問題及解決方案

    macOS上使用gperftools定位Java內(nèi)存泄漏問題及解決方案

    這篇文章主要介紹了macOS上使用gperftools定位Java內(nèi)存泄漏問題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • 解決Tomcat啟動(dòng)報(bào)異常java.lang.ClassNotFoundException問題

    解決Tomcat啟動(dòng)報(bào)異常java.lang.ClassNotFoundException問題

    這篇文章主要介紹了解決Tomcat啟動(dòng)報(bào)異常java.lang.ClassNotFoundException問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • Java正則驗(yàn)證字串符RegexValidator類使用

    Java正則驗(yàn)證字串符RegexValidator類使用

    正則驗(yàn)證字串符是一種強(qiáng)大的工具,可以幫助程序員在處理字符串時(shí)輕松進(jìn)行復(fù)雜匹配,本文將介紹正則表達(dá)式的概念、語法和在編程中的應(yīng)用,并通過實(shí)例演示如何使用正則表達(dá)式進(jìn)行字符串匹配、替換和提取等操作
    2023-11-11
  • Java實(shí)現(xiàn)對(duì)字符串中的數(shù)值進(jìn)行排序操作示例

    Java實(shí)現(xiàn)對(duì)字符串中的數(shù)值進(jìn)行排序操作示例

    這篇文章主要介紹了Java實(shí)現(xiàn)對(duì)字符串中的數(shù)值進(jìn)行排序操作,涉及java字符串與數(shù)組的相互轉(zhuǎn)換以及數(shù)組排序相關(guān)操作技巧,需要的朋友可以參考下
    2018-05-05
  • Java將圖片組合成PDF文件的方法

    Java將圖片組合成PDF文件的方法

    這篇文章主要為大家詳細(xì)介紹了Java將圖片組合成PDF文件的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • Java之Algorithm_analysis案例詳解

    Java之Algorithm_analysis案例詳解

    這篇文章主要介紹了Java之Algorithm_analysis案例詳解,本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • java爬蟲模擬登陸的實(shí)例詳解

    java爬蟲模擬登陸的實(shí)例詳解

    在本篇文章里小編給大家分享的是一篇關(guān)于java爬蟲模擬登陸的實(shí)例詳解內(nèi)容,有興趣的朋友們可以參考學(xué)習(xí)下。
    2021-01-01
  • Java線程中斷interrupt的常用方法

    Java線程中斷interrupt的常用方法

    本文主要介紹了Java線程中斷interrupt的常用方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06

最新評(píng)論