mybatis-mapper動態sql解析

問:<if test="name!=null">
                where name like concat('%',#{name},'%')
            </if>   sql

答:根據test中條件是否成立斷定<if>內語句是否生效數組

 

問:<where>
            <if test="name!=null">
                and name like concat('%',#{name},'%')
            </if>        
            <if test="price!=null and price!=0">
                and price > #{price}
            </if>
        </where>     ide

答:對象

  1. <where>標籤會進行自動判斷若是任何條件都不成立,那麼就在sql語句裏就不會出現where關鍵字。若是有任何條件成立,會自動去掉多出來的 and 或者 or。

 

問:    <update id="updateProduct" parameterType="Product" >
        update product_
        <set>
            <if test="name != null">name=#{name},</if>
            <if test="price != null">price=#{price}</if>
              
        </set>
         
         where id=#{id}   
    </update>索引

答:與where標籤相似的,在update語句裏也會碰到多個字段相關的問題。 在這種狀況下,就能夠使用set標籤字符串

 

問:<trim prefix="WHERE" prefixOverrides="AND |OR "> ... </trim>與<trim prefix="SET" suffixOverrides=","> ... </trim>get

答:it

  1. 若是 where 元素沒有按正常套路出牌,咱們能夠經過自定義 trim 元素來定製 where 元素的功能
  2. 若你對 set 元素等價的自定義 trim 元素的代碼感興趣,注意這裏咱們刪去的是後綴值,同時添加了前綴值
  3. where和set標籤的本質就是trim標籤

 

問:<foreach item="item" index="index" collection="list" open="(" separator="," close=")"> #{item} </foreach>io

答:test

  1. 一般是在構建 IN 條件語句的時候
  2. 容許你指定一個集合,聲明能夠在元素體內使用的集合項(item)和索引(index)變量。它也容許你指定開頭與結尾的字符串以及在迭代結果之間放置分隔符。
  3. 任何可迭代對象(如 List、Set 等)、Map 對象或者數組對象傳遞給 foreach 做爲集合參數。當使用可迭代對象或者數組時,index 是當前迭代的次數,item 的值是本次迭代獲取的元素。當使用 Map 對象(或者 Map.Entry 對象的集合)時,index 是鍵,item 是值。

 

問:<bind name="pattern" value="'%' + _parameter.getTitle() + '%'" /> SELECT * FROM BLOG WHERE title LIKE #{pattern}

答:bind 元素能夠從 OGNL 表達式中建立一個變量並將其綁定到上下文,至關於建立了一個變量來存放字符串

相關文章
相關標籤/搜索