MyBatis 實現(xiàn)MySQL的動態(tài) SQL 寫法1.Mybatis 動態(tài) sql 是做什么的?Mybatis 動態(tài) sql 可以讓我們在 Xml 映射文件內(nèi),以標(biāo)簽的形式編寫動態(tài) sql,完成邏輯判斷和動態(tài)拼接 sql 的功能2.Mybatis 的 9 種 動 態(tài) sql 標(biāo) 簽有哪些?3.動態(tài) sql 的執(zhí)行原理?原理為:使用 OGNL 從 sql 參數(shù)對象中計算表達(dá)式的值,根據(jù)表達(dá)式的值動態(tài)拼接 sql,以此來完成動態(tài) sql 的功能MyBatis標(biāo)簽1.if標(biāo)簽:條件判斷MyBatis if 類似于 Java 中的 if 語句,是 MyBatis 中最常用的判斷語句使用 if 標(biāo)簽可以節(jié)省許多拼接 SQL 的工作,把精力集中在 XML 的維護上1)不使用動態(tài)sqlif 語句使用方法簡單,常常與 test 屬性聯(lián)合使用語法如下:????SQL語句2)使用動態(tài)sql上面的查詢語句,我們可以發(fā)現(xiàn),如果?#{username}?為空,那么查詢結(jié)果也是空,如何解決這個問題呢?使用 if 來判斷,可多個 if 語句同時使用以下語句表示為可以按照網(wǎng)站名稱(name)或者網(wǎng)址(url)進(jìn)行模糊查詢。
如果您不輸入名稱或網(wǎng)址,則返回所有的網(wǎng)站記錄但是,如果你傳遞了任意一個參數(shù),它就會返回與給定參數(shù)相匹配的記錄2.where+if標(biāo)簽where、if同時使用可以進(jìn)行查詢、模糊查詢注意,失敗后,??關(guān)鍵字只會去掉庫表字段賦值前面的and,不會去掉語句后面的and關(guān)鍵字,即注意,?只會去掉?語句中的最開始的and關(guān)鍵字所以下面的形式是不可取的這個“where”標(biāo)簽會知道如果它包含的標(biāo)簽中有返回值的話,它就插入一個‘where’此外,如果標(biāo)簽返回的內(nèi)容是以AND 或OR 開頭的,則它會剔除掉3.set標(biāo)簽set可以用來修改4.choose(when,otherwise) 語句有時候,我們不想用到所有的查詢條件,只想選擇其中的一個,查詢條件有一個滿足即可,使用 choose 標(biāo)簽可以解決此類問題,類似于 Java 的 switch 語句也就是說,這里我們有三個條件,id、username、sex,只能選擇一個作為查詢條件· 如果 id 不為空,那么查詢語句為:select * from user where id=?· 如果 id 為空,那么看username 是否為空,如果不為空,那么語句為?select * from user where username=?;· 如果 username 為空,那么查詢語句為?select * from user where sex=?5.trimtrim標(biāo)記是一個格式化的標(biāo)記,可以完成set或者是where標(biāo)記的功能①、用 trim 改寫上面第二點的 if+where 語句· prefix:前綴· prefixoverride:去掉第一個and或者是or②、用 trim 改寫上面第三點的 if+set 語句· suffix:后綴· suffixoverride:去掉最后一個逗號(也可以是其他的標(biāo)記,就像是上面前綴中的and一樣)③、trim+if同時使用可以添加6.MyBatis foreach標(biāo)簽foreach是用來對集合的遍歷,這個和Java中的功能很類似。