MyBatis中的trim标签

并不是很常见,其实是方便之举。

select <include refid="all_column"></include> from sys_cloud_vm
    <where>
        <trim prefix="" prefixOverrides="AND | OR" suffix="" suffixOverrides="">
            <if test="filter.obj.resId != null and filter.obj.resId != '' ">
                AND res_id = #{filter.obj.resId}
            </if>
            <if test="filter.obj.operation != null and filter.obj.operation != '' ">
                AND operation = #{filter.obj.operation}
            </if>
            <if test="filter.obj.moId != null and filter.obj.moId != '' ">
                AND mo_id = #{filter.obj.moId}
            </if>
        </trim>
    </where>

这个其实的意思是,prefixoverrids中,当碰到and or开始的前缀的时候,会自动替换,替换成“”(suffix指定的),
这样避免在where 后面拼接不同的字符了,而最后的suffixoverrids中指定的逗号,则是 最后的部分要去掉的,因为SQL语句中,最后部分不会有逗号存在的。

使用示例

<query name="queryCloudVmByParameter" resultMap="HostMap">
    select <include refid="all_column"></include> from sys_cloud_vm
        <where>
            <trim prefixOverrides="AND" >
                <if test="filter.obj.resId != null and filter.obj.resId != '' ">
                    AND res_id = #{filter.obj.resId}
                </if>
                <if test="filter.obj.operation != null and filter.obj.operation != '' ">
                    AND operation = #{filter.obj.operation}
                </if>
                <if test="filter.obj.moId != null and filter.obj.moId != '' ">
                    AND mo_id = #{filter.obj.moId}
                </if>
            </trim>
        </where>
</query>

发布了67 篇原创文章 · 获赞 22 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/weixin_42119415/article/details/102730036