Java互聯網架構-如何端莊優雅增強MyBatis註解動態SQL語句?

舊顏消失殆盡丶

我們一開始接觸的網頁是靜態的,就是一個簡單的HTML,頂多有了些樣式,正是因為有了後臺傳輸的數據,網頁才變得豐富,這樣的網站才蛻變成動態網站!

可見動態這個詞賦予了多樣性,可變性!而SQL也類似!

首先我們要明白,SQL也是一門編程語言,也有編譯期和運行期!動態sql只有在運行時才能動態生成sql!

靜態SQL:類似於select * from t where ID =1這樣的句式,會在編譯的時候編譯為select * from t where ID = #這樣的句式,只在運行時把1傳進來這時候的sql句式就是在編譯期確定的,也就是靜態SQL!

動態SQL:類似於下面截圖的sql

如果在運行的時候id或者uwSourceType等字段傳入值為null,那麼這個條件將失效,也就是說如果只有id傳了值,上面的sql就變為類似於select * from t where id =*!而其他的條件將失效,也就是實現了根據傳入的值動態的生成SQL語句,這就是動態SQL!

正是因為有動態SQL,寫在xml文件中的一個sql語句可以衍生出許許多多的SQL!

mybatis的動態sql基於OGNL語句實現,通過加入標籤控制sql語句的變化,常用的標籤如下:if,where,trim,set,foreach等等,用於在假設為某一條件,當某一條件,循環等時候生成sql!

set標籤舉例:


trim和if標籤舉例:

where標籤舉例:



mybatis可以說是企業中比較常用的數據庫操作組件了,如果動態sql書寫存在問題,可以隨時跟我交流,更多的技術分享,敬請關注。。


分享到:


相關文章: