什麼是動态SQL?
動态SQL就是指根據不同的條件生成不同的SQL。
用來解決SQL拼接的難點。
建立一個基礎工程
導包
編寫配置檔案
編寫實體類
編寫實體類對應Mapper接口和Mapper.XML檔案
再輸入一些資料
在輸入的map中,3個param都有。
結果如下:

可以看到,隻走了最上面的判斷條件。
是以不同于Java中的switch case,沒有break就會一溜的往下。
在choose when default中:會判斷第一個成立的,然後break。
或者when都不成立,最後走otherwise。
set
set 元素會動态地在行首插入 SET 關鍵字,并會删掉額外的逗号
會在第一個判斷成立時,在前面添加where,且去掉該第一個語句中的and。
如果什麼都不傳,那麼這個where也不會産生。
where 元素隻會在子元素傳回任何内容的情況下才插入 “WHERE” 子句。而且,若子句的開頭為 “AND” 或 “OR”,where 元素也會将它們去除。
所謂的動态SQL,本質還是SQL語句,隻是我們可以在SQL層面增加邏輯代碼。
Foreach collection item open seperator close
接口
Mapper.xml
測試
結果
有的時候,我們可能會将一些功能的公共部分抽取出來。
使用SQL标簽抽取公共部分
在需要使用的地方使用include标簽引用即可
将重複的代碼抽取出為一個SQL片段,在需要的地方include。
動态SQL就是在拼接SQL語句,我們隻要保證SQL的正确性,按照SQL的格式,去排列組合就可以了。
建議:
先在Mysql中寫出完整的SQL,再對應的去修改成為我們的動态SQL實作通用即可!