天天看點

mybatis foreach 錯誤_MyBatis 動态SQL where/if/choose/bind介紹

mybatis foreach 錯誤_MyBatis 動态SQL where/if/choose/bind介紹

當我們需要寫複雜的 SQL 語句,往往需要拼接,而拼接 SQL ,稍微不注意,由于引号,空格等缺失可能都會導緻錯誤。

  那麼怎麼去解決這個問題呢?

我們可以使用mybatis的 動态SQL,通過 if, choose, when, otherwise, trim, where, set, foreach等标簽,可組合成非常靈活的SQL語句,進而在提高 SQL 語句的準确性的同時,也大大提高了開發人員的效率。

1.where+if

這個“where”标簽會知道如果它包含的标簽中有傳回值的話,它就插入一個‘where’。此外,如果标簽傳回的内容是以AND 或OR 開頭的,則它會剔除掉。

mybatis foreach 錯誤_MyBatis 動态SQL where/if/choose/bind介紹

在以上執行個體中,我們就是使用where-if語句進行多參數的傳遞,下面我們再示範傳一個參數的時候。

mybatis foreach 錯誤_MyBatis 動态SQL where/if/choose/bind介紹

我們發現,當第二個參數是空值時,這裡where之後的條件語句也少了一個。

2.where+choose

有時候,我們不想用到所有的查詢條件,隻想選擇其中的一個,查詢條件有一個滿足即可,使用 choose 标簽可以解決此類問題,類似于 Java 的 switch 語句

mybatis foreach 錯誤_MyBatis 動态SQL where/if/choose/bind介紹

這是在choose語句傳遞一個參數時的情況。那麼當我們傳遞兩個參數是呢?

mybatis foreach 錯誤_MyBatis 動态SQL where/if/choose/bind介紹

當我們傳遞兩個參數時,他也會隻擷取其中一個參數。這和我們javas的witch一樣,當第一次判斷成功時,之後的代碼就不會再走了。

3.where+bind

bind可以将OGNL表達式的值綁定到一個變量中,友善後來引用這個變量的值

mybatis foreach 錯誤_MyBatis 動态SQL where/if/choose/bind介紹

bind語句一般用于sql的模糊查詢。

就先介紹這三個吧,拜拜。