MyBatis 如何配置動態的 sql 語句

2021-08-22 10:10:55 字數 1243 閱讀 1872

我們在配置 mybatis 對映檔案的時候,會遇到以下幾種情況,例如說要根據一些查詢條件去選擇不同的 sql 語句,或者說把那些使用頻率特別高的 sql 語句單獨的配置出來,然後在需要它的地方直接引用即可。這就需要用到了 mybatis 的動態配置 sql 語句機制。

0x01:**示例

當碰到需要根據查詢條件選擇不同的 sql 語句情況時,我們可以使用 where 標籤來配置,在 where 標籤中有乙個 if 標籤,它就是用來判斷查詢的條件然後分配不同的 sql 語句的。例如以下示例:

select * from user

and user.*** = #

and user.username like '%$%'

在以上**中,查詢就使用了動態配置,當 gender 和 username 都不為空時就同時兩個條件,當其為空時,就不會作為查詢條件了。

這時介紹中說的第一種情況,根據查詢條件去選擇不同的 sql 語句。第二種是配置頻率特別高的 sql 語句。我們叫配置 sql 片段,配置方式很簡單,需要在使用該 sql 片段的對映配置檔案中宣告即可,格式如下:

以上**中,id 是唯一標識不可重複的。引入的時候,通過 include 引入即可,示例如下:

其中 refid 的值是需要引用 sql 片段的 id 值,mybatis 中很多標籤都可以用 id 來指定別名,然後用 refid 在其他地方引用。

0x02:sql 片段拓展

除了可以使用同乙個檔案中的 sql 片段,也可以引用其他檔案的 sql 片段,其引入方式是在 id 標識前加入配置檔案所在的 namespace,也就是空間名,例如空間名為 test,則配置示例如下:

0x03: 總結

mybatis 動態配置 sql 語句,通過 where 標籤來配置,where 標籤中的 if 標籤來決定是否使用其 sql 語句,有點像程式中的判斷語句。當需要用到頻率特別高的 sql 語句時,需要將其配置成 slq 片段,通過 include 標籤即可,include 不僅可以引用自己對映檔案中的 sql 片段,也可以引用其他檔案中的 sql 片段,當需要引用其他對映檔案中的 sql 片段時,只需要加上 namespace 名稱即可。

mybatis 動態標籤配置

我們根據實體類的不同取值,使用不同的 sql 語句來進行查詢。比如在 id 如果不為空時可以根據 id 查詢,如果 username 不為空時還要加入使用者名稱作為條件。這種情況在我們的多條件組合查詢中經常會碰到 select from user where 1 1 and id listfindu...

mybatis基於XML配置的動態SQL語句

當if標籤的test成立時,就把if標籤中的內容,拼接到上邊的sql語句的後邊 select from user where 1 1 and username and 用於 多條件不確定 查詢時,確定在拼接sql語句時,是否把 and 關鍵字給替換為 where 使用while標籤時,第乙個if標籤...

MyBatis動態SQL實現配置過程解析

動態sql 什麼是動態sql 動態sql就是根據不同的條件生成不同的sql語句 1 搭建環境 建表create table bolg id varchar 50 not null comment 部落格id title varchar 100 not null comment 部落格標題 autho...