天天看點

動态SQL

什麼是動态SQL?

動态SQL就是指根據不同的條件生成不同的SQL。

用來解決SQL拼接的難點。

建立一個基礎工程

導包

編寫配置檔案

編寫實體類

編寫實體類對應Mapper接口和Mapper.XML檔案

再輸入一些資料

在輸入的map中,3個param都有。

結果如下:

動态SQL

可以看到,隻走了最上面的判斷條件。

是以不同于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

有的時候,我們可能會将一些功能的公共部分抽取出來。

使用SQL标簽抽取公共部分

在需要使用的地方使用include标簽引用即可

将重複的代碼抽取出為一個SQL片段,在需要的地方include。

動态SQL就是在拼接SQL語句,我們隻要保證SQL的正确性,按照SQL的格式,去排列組合就可以了。

建議:

先在Mysql中寫出完整的SQL,再對應的去修改成為我們的動态SQL實作通用即可!