Mybatis动态SQL之trim标签

Mybatis中where标签只能去除第一个条件中出现的前缀AND关键字。当因为条件满足多出了一个条件关键字时,where无法去除会导致SQL语法报错。此时可以考虑trim标签[Mybatis中where标签底层也是使用了trim标签实现]。

<!--trim修剪前后缀标签-->
<select id="selectTestByTrim" resultType="com.heiketu.testpackage.pojo.Product">
    SELECT
        prod_id prodId,
        vend_id vendId,
        prod_name prodName,
        prod_desc prodDesc
    FROM Products
    <trim prefix="WHERE" prefixOverrides="and|or" suffixOverrides="and|or">
        <if test="prodId != null and prodId != ''">
            AND prod_id = #{prodId} AND
        </if>

        <if test="prodName != null and prodName != ''">
            AND prod_name = #{prodName} AND
        </if>
    </trim>
</select>

以上SQL中多现了多处AND,按照以往采用WHERE标签,已无法解决修剪SQL语句的作用。此时采用了trim标签。

在trim标签中有以下几个属性:

属性名属性解释
prefix要添加的前缀。比如这里因为没有使用WHERE,按照语法格式条件必须要有WHERE。此时就可以使用prefix属性给整个条件语句块前面添加一个WHERE关键字。
prefixOverrides要删除的前缀。如果多出来指定的前缀,则将这些多出来的前缀修剪去除。比如:如果在整个语句中需要修剪去`AND
suffix要添加的后缀。使用方式与prefix类似,只是prefix是增加前缀,而suffix是添加一个后缀在被包裹的语句块中。
suffixOverrides要删除的后缀。使用方式与prefixOverrides类似,只是一个是去除前面多余的关键字,suffixOverrides是删除多余后面的。

prefix如果有值,则会替换掉prefixOverrides中的部分。suffix也相同。如果没有值则是默认为空。

重点: 其实whereset都能用trim标签来解决。

  • 6
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值