《 if》標籤用於進行條件判斷,test 屬性用於指定判斷條件,當滿足判斷條件,才可以拼接《if》標籤裡的sql。
為了滿足select語句的拼接條件, 在 sql 語句後強行新增where 1=1 的恆成立條件;
如果不想用拼接where 1=1 , 還可以加標籤;
《where》標籤 用於管理 where 子句.有如下功能:
《where》標籤會自動幫我們在sql語句中新增或取消where子句(如果乙個引數都沒有那麼where子句取消), 也會自動去除and;
when標籤中的test標籤相當於switch
when相當於 case
otherwise 相當於 default
標籤用於維護update中的set子句;
測試類中, 獲取介面的物件, 呼叫介面的實現方法upduser();
trim標籤有4個屬性: prefix、prefixoverrides……
標籤和標籤其實都是由trim標籤演變而來;
當我們從前面新增了set, 從前面刪除了user,從後面新增了hahaha,從後面刪除了『逗號,』 ,我們現在看一看測試類中呼叫本方法, 然後通過debug的日誌級別, 列印在console上的資訊:
從這裡我們也可以看到,當我們在mybatis中呼叫#{}而不是${}取引數時,mybatis底層對呼叫preparedstatement,將引數先當成佔位符處理。
所以使用#{}可以有效避免sql注入問題,而使用${}不可以。
《bind》標籤一般用於模糊查詢,它是對傳進來的引數資料進行再處理的;
由於是模糊查詢,上圖出現了一處錯誤,你能找到嗎?
這個時候,#取出的username就不是簡簡單單的username的值了,而是加了兩個%的值;
《forech》標籤是動態sql查詢中,迭代乙個集合的必要操作,通常和in條件一起使用;
舉例:select * from employeestable where id in(1,2,3,4),
把in條件的元素(1,2,3,4)封裝成乙個list集合,然後把集合作為引數傳入。
測試這個方法的結果:
復用時用的;
MyBatis動態SQL之增 刪 改 查操作
概述 select from students 不去限制姓名和年齡當我們將年齡選擇為 20時,相當於下面的sql語句 select from students where age 20 當我們同時選擇條件姓名為 張三,年齡 20,則相當於下面的sql語句 select from students w...
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進行靈活拼接 組裝。現有需求如下 需要查詢使用者,輸入的是使用者類,如果使用者的性別類不為空,則將性別作為查詢條件之一,如果使用者的姓名不為空,則將使用者姓名作為查詢條件之一。如果使用者兩個屬性都為空,則查詢所有使用者。將上...