Mybatis--动态SQL(if,where,trim)

2022-07-30  本文已影响0人  何以解君愁

Mybatis框架的动态SQL技术是一种根据特定条件动态拼接SQL语句的功能,作用是为了解决拼接SQL语句字符串的痛点问题
if标签:根据标签中test属性对应的表达式决定标签中的内容是否需要拼接到SQL中
where标签:当where标签中有内容时,会自动生成where关键字,并且将内容前(内容后的不行)多余的and或or去掉,当无内容时不起作用

    <select id="selectByPageAndCondition" resultMap="brandResultMap">
        select *
        from tb_brand
        <where>
            <if test="brand.brandName != null and brand.brandName != ''">
                and brand_name like #{brand.brandName}
            </if>
            <if test="brand.companyName != null and brand.companyName != ''">
                and company_name like #{brand.companyName}
            </if>
            <if test="brand.status != null">
                and status = #{brand.status}
            </if>
        </where>
        limit #{begin},#{size}
    </select>

trim标签(无内容时不起作用):
prefix|suffix:在trim标签内容前面或后面添加指定内容;
prefixOverrides|suffixOverrides:在trim标签内容前面或后面删除指定内容

<select id="getEmpBycondition" resultType="Emp">
    select*from t_emp
    <trim prefix=where suffixoverrides="and|or">
        <if test="empName != null and empName != ''">
            emp_name =#{ empName} and
        </if>
        <if test="age != null and age != ''">
        age = #{ age} or
        </if>
    </trim>
</select>
上一篇下一篇

猜你喜欢

热点阅读