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 表达式中建立一个变量并将其绑定到上下文,至关于建立了一个变量来存放字符串

相关文章
相关标签/搜索