在 MyBatis 中,动态 SQL 可以使用 XML 中的一些特殊元素来实现条件判断、循环等动态构建 SQL 语句的功能。以下是 MyBatis 中常用的动态 SQL 元素:

  1. if 元素: 用于条件判断,根据条件动态拼接 SQL 语句。
<select id="getUserByCondition" parameterType="map" resultType="User">
    SELECT * FROM users
    <where>
        <if test="name != null">
            AND name = #{name}
        </if>
        <if test="age != null">
            AND age = #{age}
        </if>
    </where>
</select>
  1. choose、when、otherwise 元素: 类似于 switch-case 的选择结构。
<select id="getUserByCondition" parameterType="map" resultType="User">
    SELECT * FROM users
    <where>
        <choose>
            <when test="name != null">
                AND name = #{name}
            </when>
            <when test="age != null">
                AND age = #{age}
            </when>
            <otherwise>
                AND status = 'active'
            </otherwise>
        </choose>
    </where>
</select>
  1. trim、where、set 元素: 用于处理 SQL 语句中的空白字符。
<update id="updateUser" parameterType="User">
    UPDATE users
    <set>
        <if test="name != null">name = #{name},</if>
        <if test="age != null">age = #{age},</if>
    </set>
    WHERE id = #{id}
</update>
  1. foreach 元素: 用于循环处理集合,生成 IN 子句。
<select id="getUsersByIdList" parameterType="map" resultType="User">
    SELECT * FROM users WHERE id IN
    <foreach collection="ids" item="id" open="(" separator="," close=")">
        #{id}
    </foreach>
</select>

这些动态 SQL 元素可以帮助开发者根据条件、集合等动态构建 SQL 语句,使得 SQL 的生成更加灵活和便捷。

Was this helpful?

0 / 0

发表回复 0

Your email address will not be published.