1. 程式人生 > >一起來學大資料|Mybatis之如魚得水的動態SQL,百樣玲瓏?

一起來學大資料|Mybatis之如魚得水的動態SQL,百樣玲瓏?

一起來學大資料|Mybatis之如魚得水的動態SQL,百樣玲瓏?

 

昨天,我們就學習了mybatis的 一下相關的知識,文章開頭我們級提到它可以解決SQL的硬編碼問題,但是根據昨天的文章,我們並沒有看出mybatis的優勢。今天我們來使用mybatis中的動態sql來解決我們仍有的困惑。

動態 SQL

在mybatis框架中,動態sql是其強大的特性之一。大家在之前的jdbc的操作時候有沒有感覺到去拼接sql語句的痛苦,先是拼接成變數,在作為資料引數傳入然後在查詢等等步驟,十分的麻煩。

為了解決這個sql的拼接問題,動態sql於是就出現了。我們通過使用動態sql的標籤從而解決sql語句的拼接問題,也減少了我們sql語句的程式碼量。

標籤

對於標籤的使用,我們只需要在我們配置sql語句的Mapper.xml檔案中直接修改sql語句就可以了。

1、If標籤

假定我們設定了一條多條件查詢的SQL語句,當我們在輸出的時候,我們只傳了一個引數,這時候我們就會看到搜尋結果為空,就像下圖。

一起來學大資料|Mybatis之如魚得水的動態SQL,百樣玲瓏?

 

修改前的sql語句是這個樣子的。

一起來學大資料|Mybatis之如魚得水的動態SQL,百樣玲瓏?

 

改造之後的樣子如下圖,我們讓這條sql永遠成立,所以加上了1=1,if標籤中的text中加入我們的條件,就是性別欄位不是null或者為空,我們在第一行sql語句後面加上and sex=#{sex}來接收資料。一次類推。

一起來學大資料|Mybatis之如魚得水的動態SQL,百樣玲瓏?

 

執行之後的效果是下面這個樣子的。

一起來學大資料|Mybatis之如魚得水的動態SQL,百樣玲瓏?

 

我們可以看到where 1=1永遠都在,我們不想要輸出這個怎麼辦,接下來就使用到了我們的where標籤。

2、where標籤

一起來學大資料|Mybatis之如魚得水的動態SQL,百樣玲瓏?

 

我們看到,我們將where 1=1改成where標籤即可實現對sql語句的改造,效果圖如下。

一起來學大資料|Mybatis之如魚得水的動態SQL,百樣玲瓏?

 

沒有了where 1=1是不是很清爽~

3、Sql片段

在Sql中我們可以將重複的sql提取出來,使用時用include引用即可,最終達到sql重用的目的。

一起來學大資料|Mybatis之如魚得水的動態SQL,百樣玲瓏?

 

我們把sql中經常重複的片段提取出來,使用用<sql>包裝起來,並加上id標識,我們在下面使用include引入即可。

4、foreach標籤

對於這個標籤,我們毫無疑問就知道是用於迴圈遍歷了,可以實現我們多id查詢。

例如:SELECT * FROM user WHERE id IN (1,10,24)

一起來學大資料|Mybatis之如魚得水的動態SQL,百樣玲瓏?

 

我們可以看到結果就是下面這個樣子。

一起來學大資料|Mybatis之如魚得水的動態SQL,百樣玲瓏?

 


上面就是我們講到的Mybatis中強大的特性動態sql中的一些常用的標籤,當我們大量使用sql語句的時候,我們便能體驗出其中的優勢,比起jdbc起碼減少了50%以上的程式碼量,但這也是mybatis的缺點之一SQL語句的編寫工作量較大。個人原創,請多指教~

明天我們開始學習Spring,讓程式碼在少一半!有學習到的話,記得點個關注支援一下喲~

感謝堅持關注的朋友~

一起來學大資料|Mybatis之如魚得水的動態SQL,百樣玲瓏?

 

世界很大,幸好有你~

歡迎在評論區留下你的問題或困惑,我將每天與你分享我的觀點和心得。

聚焦最新科技諮訊,探尋未來智慧領域,我是Mario女陶。