1. 程式人生 > >Myabtis動態SQL,你真的會了嗎?

Myabtis動態SQL,你真的會了嗎?

### 目錄 - 前言 - 什麼是動態SQL? - 常用的標籤 - if - choose、when、otherwise - where - foreach - set - sql - include - 總結 - 拓展一下 - Mybatis中如何避免魔數? - 如何引用其他XML中的SQL片段? - 總結 ## 前言 - 通過前兩篇的文章我們瞭解了Mybatis基本的CRUD操作、一些基本標籤的屬性以及如何對映結果,感興趣的可以看我的前兩篇文章,分別是**Mybatis入門之基礎操作**和**Mybatis結果對映,你射準了嗎?**,如果有什麼疑問的地方可以在文章下方留言,作者統一回復。 - 這篇文章就來聊一聊Mybatis的動態SQL,在實際的開發中Mybatis的這項功能是非常重要的,至於什麼是動態SQL?如何實現動態SQL?下面文章將會詳細介紹。 ## 什麼是動態SQL? - 動態 SQL 是 MyBatis 的強大特性之一。顧名思義,就是會動的SQL,即是能夠靈活的根據某種條件拼接出完整的SQL語句。這種類似於MySQL中的`case when then else then end....`這種語法,能夠根據某種條件動態的拼接出需要的SQL。 - 至於Mybatis如何實現動態SQL呢,Mybatis提供了非常多的標籤,能夠讓我們在XML檔案中靈活的運用這些標籤達到拼接SQL的目的。 ## 常用的標籤 - Mybatis為了能夠讓開發者靈活的寫SQL也是費了一番功夫,定義了很多的標籤和語法,下面將會一一介紹。 ### if - 雖然英文不太好,但是在這麼簡單的不會不知道是`如果`的意思吧,Java語法中也有,只有判斷條件為`true`才會執行其中的SQL語句。 - 舉個栗子:HIS系統中醫護人員需要根據特定條件篩選患者,比如住院號,床位,性別等。當然這些條件並不是必填的,具體的功能截圖如下: ![](https://gitee.com/chenjiabing666/Blog-file/raw/master/Mybatis-%E5%8A%A8%E6%80%81SQL/1.png) - 以上截圖中的條件篩選並不是必填的,因此我們不能在SQL中固定,要根據前端是否傳值來判斷是否需要加上這個條件。那麼此時查詢語句如何寫呢?如下: ```xml