Mybatis trim標籤

trim代替where/set標籤

trim 是更靈活用來去處多餘關鍵字的標籤,它可以用來實現 where 和 set 的效果。

<!-- 使用 if/trim 代替 where(判斷參數) - 將 User 類不為空的屬性作為 where 條件 -->
<select id="getUsertList_if_trim" resultMap="resultMap_User">
    SELECT *
      FROM user u
    <trim prefix="WHERE" prefixOverrides="AND|OR">
        <if test="username !=null ">
            u.username LIKE CONCAT(CONCAT('%', #{username, jdbcType=VARCHAR}),'%')
        </if>
        <if test="sex != null and sex != '' ">
            AND u.sex = #{sex, jdbcType=INTEGER}
        </if>
        <if test="birthday != null ">
            AND u.birthday = #{birthday, jdbcType=DATE}
        </if>
    </trim>
</select>  

trim 代替 set

<!-- if/trim代替set(判斷參數) - 將 User 類不為空的屬性更新 -->
<update id="updateUser_if_trim" parameterType="com.zaixian.pojo.User">
    UPDATE user
    <trim prefix="SET" suffixOverrides=",">
        <if test="username != null and username != '' ">
            username = #{username},
        </if>
        <if test="sex != null and sex != '' ">
            sex = #{sex},
        </if>
        <if test="birthday != null ">
            birthday = #{birthday},
        </if>

    </trim>
    WHERE user_id = #{user_id}
</update>  

trim (對包含的內容加上 prefix,或者 suffix 等,首碼,尾碼)

<select id="dynamicTrimTest" parameterType="Blog" resultType="Blog">
        select * from t_blog
        <trim prefix="where" prefixOverrides="and |or">
            <if test="title != null">
                title = #{title}
            </if>
            <if test="content != null">
                and content = #{content}
            </if>
            <if test="owner != null">
                or owner = #{owner}
            </if>
        </trim>
    </select>

trim 元素的主要功能是可以在自己包含的內容前加上某些首碼,也可以在其後加上某些尾碼,與之對應的屬性是 prefix 和 suffix;可以把包含內容的首部某些內容覆蓋,即忽略,也可以把尾部的某些內容覆蓋,對應的屬性是 prefixOverrides 和 suffixOverrides;正因為 trim 有這樣的功能,所以我們也可以非常簡單的利用 trim 來代替 where 元素的功能。



上一篇: Mybatis set標籤 下一篇: MyBatis choose(when, otherwise)標籤