最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

1.解決方案

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

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

SELECT * FROM BLOG
WHERE

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

SELECT * FROM BLOG
WHERE
AND title like ‘someTitle'

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

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

<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 元素只會在子元素返回任何內(nèi)容的情況下才插入 “WHERE” 子句。而且,若子句的開頭為 “AND” 或 “OR”,where 元素也會將它們?nèi)コ?/p>

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

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

3.官方文檔地址

mybatis官網(wǎng)地址

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

相關(guān)文章

  • java中的常用集合類整理

    java中的常用集合類整理

    在本篇文章里小編給大家整理的是關(guān)于java中的常用集合類的相關(guān)知識點內(nèi)容,有興趣的朋友們學(xué)習(xí)下。
    2019-12-12
  • Java中String字符串常量池和intern方法源碼分析

    Java中String字符串常量池和intern方法源碼分析

    在之前的文章中,小編給大家介紹了String字符串的不可變性及其實現(xiàn)原理,其中給大家提到了字符串常量池的概念,那么什么是常量池,String字符串與常量池有什么關(guān)系,本文給大家嘮嘮字符串常量池及String#intern()方法的作用,需要的朋友可以參考下
    2023-05-05
  • springboot?vue測試平臺接口定義前后端新增功能實現(xiàn)

    springboot?vue測試平臺接口定義前后端新增功能實現(xiàn)

    這篇文章主要介紹了springboot?vue測試平臺接口定義前后端新增功能實現(xiàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • Spring的初始化和XML解析的實現(xiàn)

    Spring的初始化和XML解析的實現(xiàn)

    這篇文章主要介紹了Spring的初始化和XML解析的實現(xiàn),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-03-03
  • Java網(wǎng)絡(luò)編程之IO模型阻塞與非阻塞簡要分析

    Java網(wǎng)絡(luò)編程之IO模型阻塞與非阻塞簡要分析

    這篇文章主要介紹Java網(wǎng)絡(luò)編程中的IO模型阻塞與非阻塞簡要分析,文中附有示例代碼,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-09-09
  • JAVA多線程實現(xiàn)的四種方式及使用場景詳解

    JAVA多線程實現(xiàn)的四種方式及使用場景詳解

    這篇文章主要介紹了JAVA多線程實現(xiàn)的四種方式及使用場景,并舉例說明了在管理系統(tǒng)中多線程的應(yīng)用場景,如數(shù)據(jù)導(dǎo)入導(dǎo)出、數(shù)據(jù)緩存更新、并發(fā)用戶操作處理、系統(tǒng)監(jiān)控和定時任務(wù)執(zhí)行,需要的朋友可以參考下
    2025-01-01
  • List調(diào)用toString()方法后,去除兩頭的中括號實例

    List調(diào)用toString()方法后,去除兩頭的中括號實例

    下面小編就為大家?guī)硪黄狶ist調(diào)用toString()方法后,去除兩頭的中括號實例。希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-03-03
  • 詳解java如何解析和生成sql

    詳解java如何解析和生成sql

    JSQLParser?是一個開源的?Java?庫,用于解析?SQL?語句并將其轉(zhuǎn)換為抽象語法樹,下面我們就來看看java是如何使用JSQLParser解析和生成sql的吧
    2024-12-12
  • 關(guān)于SpingMVC的<context:component-scan>包掃描踩坑記錄

    關(guān)于SpingMVC的<context:component-scan>包掃描踩坑記錄

    這篇文章主要介紹了關(guān)于SpingMVC的<context:component-scan>包掃描踩坑記錄,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • 詳解Spring DI依賴注入的方式和類型

    詳解Spring DI依賴注入的方式和類型

    這篇文章主要介紹了詳解Spring DI依賴注入的方式和類型,DI是由容器動態(tài)的將某個依賴關(guān)系注入到組件之中。依賴注入的目的并非為軟件系統(tǒng)帶來更多功能,而是為了提升組件重用的頻率,并為系統(tǒng)搭建一個靈活、可擴展的平臺,需要的朋友可以參考下
    2023-05-05

最新評論

平顶山市| 昭通市| 本溪| 万宁市| 康马县| 永修县| 石城县| 宣汉县| 北票市| 深州市| 乐昌市| 宜州市| 怀柔区| 万载县| 林芝县| 清流县| 江永县| 中牟县| 靖西县| 资阳市| 红桥区| 汝阳县| 高台县| 永胜县| 通化市| 本溪市| 广东省| 钟山县| 波密县| 新龙县| 象山县| 屏山县| 赫章县| 壤塘县| 贵阳市| 溆浦县| 哈巴河县| 武宣县| 顺义区| 荔浦县| 于田县|