Mybatis 動態sql語句if和where標籤巧妙使用

2020-12-09 早起的年輕人

本文章描述的是 Mybatis if標籤和where標籤的結合使用

需求是:根據電話和名字查用戶數據

1 sql 查詢

查詢sql語句如下:

SELECT id , gender , nickname , mobile , avatar FROM dts_user WHERE gender = 1 AND mobile LIKE '%456%'

查詢結果如下圖所示:

2 mybatis動態sql配置

Mapper.xml文件配置sql如下:

關注一下,你不會迷路,任何時刻,任何角度,來看一看年輕人在編程研發中的點滴積累。

在代碼塊 2-1 中,查詢條件 gender 已固定,模糊查詢 mobile 以修改成了動態配置,同理將查詢條件 gender 改進一下(只能查 gender 為 0 或者 1 的用戶數據 )如下代碼塊 2-2所示:

在代碼塊2-2中查詢條件 mobile 與 gender 是必先條件,改進一下,使用 if 標籤來判斷,可選擇性來使用查詢條件,如下代碼塊2-3所示:

改進一下 ,查所有用戶的信息時,不傳 gender 與 username 數據,如下所示:

相關焦點

  • MyBatis 動態 SQL 詳解(以後寫 SQL 爽多了)
    動態 SQL 是 MyBatis 的強大特性之一。如果你使用過 JDBC 或其它類似的框架,你應該能理解根據不同條件拼接 SQL 語句有多痛苦,例如拼接時要確保不能忘記添加必要的空格,還要注意去掉列表最後一個列名的逗號。利用動態 SQL,可以徹底擺脫這種痛苦。
  • mybatis使用註解編寫動態sql注意事項
    在spring+springmvc+mybatis框架中開發,編寫sql語句以前都是直接使用xml的方式編寫,現在由於新的項目框架搭建過程中,同事配置的是使用註解的方式編寫sql語句,因此我也開始學習使用註解編寫sql語句。
  • MyBatis動態Sql之choose,where,set標籤的用法
    用法where標籤的作用:如果該標籤包含的元素中有返回值,就插入一個where,如果where後面的字符串是以AND或者OR開頭的,就將它們剔除。= ''"> AND user_email = #{userEmail} </if> </where></select>當if條件都不滿足的時候,where元素中沒有內容,此時的Sql語句不會有where,語法正確。
  • Mybatis中trim標籤的使用教程
    mybatis的trim標籤一般用於去除sql語句中多餘的and關鍵字,逗號,或者給sql語句前拼接 「where「、「set「以及「values
  • mybatis中trim標籤的使用
    的trim標籤一般用於去除sql語句中多餘的and關鍵字,逗號,或者給sql語句前拼接 「where「、「set「以及「values(「 等前綴,或者添加「)「等後綴,可用於選擇性插入、更新、刪除或者條件查詢等操作。
  • Mybatis 動態sql 學習總結
    如果你有使用 JDBC 或其他類似框架的經驗,你就能體會到根據不同條件拼接 SQL 語句有多麼痛苦。拼接的時候要確保不能忘了必要的空格,還要注意省掉列名列表最後的逗號。利用動態 SQL 這一特性可以徹底擺脫這種痛苦。
  • MyBatis dynamic SQL 1.1.4 發布,生成動態 SQL 的框架
    MyBatis dynamic SQL 1.1.4 已發布,MyBatis Dynamic SQL 是生成動態 SQL 語句的框架,可把它看作是一個類型安全的 SQL 模板庫,它還支持 MyBatis3
  • Mybatis trim 標籤的 2 個妙用!
    mybatis的trim標籤一般用於去除sql語句中多餘的and關鍵字,逗號,或者給sql語句前拼接 「where「、「set「以及「values
  • Java程式設計師開發必備 MyBatis高級應用之逆向工程自動生成SQL語句
    MyBatis的一個主要的特點就是需要程式設計師自己編寫sql,那麼如果表太多的話,難免會很麻煩,所以mybatis官方提供了一個逆向工程,可以針對單表自動生成mybatis執行所需要的代碼,一般在開發中,常用的逆向工程方式是通過資料庫的表生成代碼。
  • 技巧:MyBatis 中的trim標籤,好用!
    作者 | wt_better來源 | https://blog.csdn.net/wt_better/article/details/80992014mybatis的trim標籤一般用於去除sql語句中多餘的and關鍵字,逗號,或者給sql語句前拼接 「where「、「set「以及「values(「 等前綴,或者添加「)「等後綴,可用於選擇性插入、更新、刪除或者條件查詢等操作
  • Java 持久層框架之 MyBatis
    -- 這是默認的執行類型 (SIMPLE: 簡單; REUSE: 執行器可能重複使用prepared statements語句;BATCH: 執行器可以重複執行語句和批量更新) --> <setting name="defaultExecutorType" value="SIMPLE"/> <!-- 使用駝峰命名法轉換欄位。
  • Mybatis_day01
    然後通過SQL語句的key值去獲取對應的SQL語句。既然我們將SQL語句都統一放在配置文件或者資料庫中,那麼這裡就涉及一個SQL語句的加載問題。第三步優化:傳入參數映射和動態SQL問題描述:很多情況下,我們都可以通過在SQL語句中設置佔位符來達到使用傳入參數的目的,這種方式本身就有一定局限性,它是按照一定順序傳入參數的,要與佔位符一一匹配。
  • MyBatis 動態 SQL(認真看看, 以後寫SQL就爽多了)
    MyBatis 動態 SQL 的出現, 解決了這個麻煩。MyBatis通過 OGNL 來進行動態 SQL 的使用的。if 標籤是我們最常使用的。2.3 在 INSERT 動態插入中使用 if 標籤我們插入資料庫中的一條記錄, 不是每一個欄位都有值的, 而是動態變化的。在這時候使用 if 標籤, 可幫我們解決這個問題。
  • 最強解讀MyBatis是如何執行SQL語句的?
    MyBatis 如何獲取 sql 語句?MyBatis 如何執行 sql 語句?MyBatis 如何實現不同類型數據之間的轉換?在過去程式設計師使用JDBC連接資料庫,總會帶來諸多不便。MyBatis 如何獲取 sql 語句? 與獲取資料庫源類似,只要解析Mapper配置文件中的對應標籤,就可以獲得對應的sql語句。
  • Java程式設計師必須知道的MyBatis經典面試題
    它可以使用XML配置文件或者註解寫SQL語句。對於現在主流的持久層框架,經常會在面試題目中出現,那麼你對MyBatis經典面試題了解多少呢?1. #{}和${}的區別是什麼?mybatis把sql語句從Java代碼抽離出來,單獨放在XML文件管理,管理非常方便mybatis底層封裝了JDBC接口,並自動將結果映射到Java bean中,大大減少代碼的編寫數量,減少重複的工作量mybatis可以手動編寫SQL語句,靈活控制SQL語句,編寫更好的
  • Java Mybatis CRUD增刪改查
    > getUserList(); User getUserById(int id);}2、編寫對應的mapper中的sql語句<?語句 <select id="getUserById" parameterType="int" resultType="com.cy.pojo.User"> select * from mybatis.user where id = #{id} </select> <insert
  • SQL語句中where條件為什麼寫上1=1
    where後面加"1=1"還是不加不用where 1=1 在多條件查詢的困惑使用where 1=1 的好處使用where 1=1 的壞處  如果上述的兩個if判斷語句均為false時,那麼最終的動態SQL語句為: select * from table_name where
  • Mybatis 中xml和註解映射,原來如此簡單
    resultMap:用來描述資料庫結果集和對象的對應關係。sql:可以重用的塊,也可以被其他語句引用。通常時存放一些公用性的。返回類型:User類型,resultType:查詢語句返回結果類型的完全限定名或別名。別名使用方式和parameterType是一樣的。
  • Mybatis基礎最全總結
    」優點SQL寫在XML文件裡,降低耦合度,便於統一管理和優化,並可重用。提供映射標籤,支持對象與資料庫的ORM欄位關係映射。缺點SQL語句編寫工作量較大,尤其是欄位多,關聯表多時,更是複雜。SQL語句依賴資料庫,不同資料庫SQL語句存在細微差異,不能隨意更換資料庫。
  • 使用mybatis框架,完成增刪改查操作
    最後使用動態代理對代碼優化,具體底層實現原理就不仔細深究了,大致知道怎麼回事就行。一、mybatis使用步驟回顧主要是涉及到配置文件的編寫,其中又包含核心配置文件和映射文件。總之sqlSession對象是關鍵,通過它就能執行sql語句了。而如何找到對應的sql語句並執行?就需要在參數中說明sql語句對應的id了。