1. 程式人生 > 其它 >MyBatis的動態SQL

MyBatis的動態SQL

MyBatis——動態SQL

什麼是動態SQL

簡單的來說就是可以根據實時的業務需求動態的改變SQL語句。在程式還未編譯的情況下SQL語句不能確定,而是在程式執行階段並在執行過程中才能確定SQL語句,這就叫動態SQL語句。

為什麼要使用動態SQL

在初級階段我們的程式進行資料庫操作時,書寫的SQL語句都是確定的,就在程式執行前就已經寫死了,我們不能根據實時業務對SQL進行實時更改,這樣可能導致我們需要為業務編寫的SQL語句繁多,舉個例子:現在我需要根據10個不同的資料庫表字段名進行查詢,其中每個欄位名都是可選的,如果不用動態SQL,使用靜態SQL我們需要實現的SQL語句有多少?數學好的可以使用全排看看需要多少?

想想如果可以在SQL中來個if語句該有多好?那隻需要編寫一條SQL語句就可以滿足需求了(美滋滋),所以動態SQL的重要性不言而喻,在如今的大資料時代,如果沒有動態SQL,業務的開發週期可想而知有多長!

MyBatis的動態SQL

接下來就看官方文件吧!應該沒有什麼是部落格加官方文件解決不了的。如果有那就再看幾遍!

動態SQL小結

  • if:條件判斷,是最常用的,也是最有效的。
  • where:where 元素只會在子元素返回任何內容的情況下才插入 “WHERE” 子句。而且,若子句的開頭為 “AND” 或 “OR”,where 元素也會將它們去除。
  • set:set 元素會動態地在行首插入 SET 關鍵字,並會刪掉額外的逗號(這些逗號是在使用條件語句給列賦值時引入的)。通過介紹得知,set元素只能用在修改操作
  • foreach:這個也是比較重要的元素,重點在於理解collection屬性!
  • choose、when、otherwise:這個就是Java中的switch-case,分支選擇。choose類似於switch程式碼塊,when類似於一個一個條件,otherwise則為最後預設的條件。
  • trim:這個元素千萬別以為他是簡單“去空格”(一開始我也是這樣認為的),他的功能非常強大,但是卻不常用,我們可以通過自定義 trim 元素來定製其他動態SQL元素的功能,比如where、set...等,也許就因為太強大了,平常業務中並不需要,所以使用的不多(這就是無敵太寂寞?)。
當然,每個動態SQL的元素只要我們合理搭配,可以節省我們對SQL語句的開發時間以及程式碼量,讓資料庫開發更加高效,我們也只有在更多的實際業務或專案中使用動態SQL進行開發才能真正的體會到其便利性,高效性,也能更深刻的理解它,加油!!!。