在sql語法中如果我們想使用in的話直接可以像如下一樣使用:
updateuser
set status='1'
where id in (1,2,3
) ;select
*from
user
where id in (1,2,3) ;
但是如果在mybatis中的使用 in 操作符,像下面這樣寫的話,肯定會報錯:
@update("updateuser
set status=# where id in
#")
public void updateuserstatus(@param("userids") string userids, @param("status") int status);
其中 userids
= (1,2,3)
這樣直接拼接的寫法,看似很簡單,在 findbycondition 用沒問題,但在動態sql註解中mybatis是不支援的。
上帝關上了一扇門,就肯定會開啟一扇窗。
對於上面這種情況,mybatis中提供了foreach語句來實現in查詢。
foreach語法如下: foreach語句中, collection屬性的引數型別可以支援:list、陣列、map集合
示例:
@update( where id in", "
=\"index\" open
=\"(\" separator=\",\" close
=\")\">
", "#",
"foreach>
", "
script>
"})public void updateuserstatus(@param("useridlist") list useridlist, @param("status") int status);
共同學習,共同進步,若有補充,歡迎指出,謝謝!
mybatis 動態sql詳解
內容 轉到原網頁insert into t blog title,content,owner values select from t blog where id update t blog set title content owner where id select from t blog se...
mybatis入門 動態sql
mybatis核心就是對sql語句進行靈活操作,通過表示式進行判斷,對sql進行靈活拼接 組裝。現有需求如下 需要查詢使用者,輸入的是使用者類,如果使用者的性別類不為空,則將性別作為查詢條件之一,如果使用者的姓名不為空,則將使用者姓名作為查詢條件之一。如果使用者兩個屬性都為空,則查詢所有使用者。將上...
MyBatis動態sql查詢
什麼是動態sql mybatis核心 對sql語句進行靈活操作,通過表示式進行判斷,對sql進行靈活拼接 組裝。需求public class userpo if test userpo.id null and id if if where select id findusercount parame...