外汇直播室都是网站做的辽宁建设工程造价信息网
在 MyBatis 中,您可以使用动态 SQL 标签来构建灵活的 SQL 查询,以根据不同的条件生成不同的查询语句。以下是这些标签的作用和用法:
1. **`<if>` 标签:** 用于根据某个条件动态地包含或排除 SQL 片段,test:可以写条件。
   示例用法:
    
    ```xml
    <select id="getUserList" parameterType="Map" resultMap="UserResultMap">
        SELECT * FROM users
        <where>
            <if test="username != null">AND username = #{username}</if>
            <if test="email != null">AND email = #{email}</if>
        </where>
    </select>
    ```
    
 2. **`<where>` 标签:** 用于在 SQL 查询中生成 `WHERE` 子句,并自动处理不必要的 `AND` 或 `OR`。
   示例用法:
    
    ```xml
    <select id="getUserList" parameterType="Map" resultMap="UserResultMap">
        SELECT * FROM users
        <where>
            <if test="username != null">AND username = #{username}</if>
            <if test="email != null">AND email = #{email}</if>
        </where>
    </select>
    ```
    
 3. **`<set>` 标签:** 用于在更新语句中动态生成 `SET` 子句,根据传入的参数来更新特定的列。
   示例用法:
    
    ```xml
    <update id="updateUser" parameterType="User">
        UPDATE users
        <set>
            <if test="username != null">username = #{username},</if>
            <if test="email != null">email = #{email},</if>
        </set>
        WHERE id = #{id}
    </update>
    ```
4. **`<trim>` 标签:** 用于在 SQL 语句中修剪多余的空白字符和逗号,并可以根据条件自定义修剪的内容。
prefix:在sql动态条件加前缀
suffix:在sql动态条件加后缀
prefixOverrides:删除sql动态条件前缀内容
suffixOverrides:删除sql动态条件后缀内容
   示例用法:
    
    ```xml
    <select id="getUserList" parameterType="Map" resultMap="UserResultMap">
        SELECT * FROM users
        <where>
            <trim prefix="AND" prefixOverrides="OR">
                <if test="username != null">OR username = #{username}</if>
                <if test="email != null">OR email = #{email}</if>
            </trim>
        </where>
    </select>
    ```
5. **`<foreach>` 标签:** 用于循环遍历集合或数组,生成多个 SQL 片段。
   示例用法:
    
    ```xml
    <select id="getUserListByIds" parameterType="List" resultMap="UserResultMap">
        SELECT * FROM users
        WHERE id IN
        <foreach collection="list" item = "listParam" open = "(" separator = "," close = ")">
            #{listParam}
        </foreach>
    </select>
    ```
6. **`<choose>` 标签:** 类似于 Java 中的 `switch` 语句,根据条件选择其中一个分支进行处理。
choose(类似switch)
when标签: 类似switch的case分支 , 需要写test属性
otherwise(否则): 类似switch的default分支
   示例用法:
    ```xml
    <select id="getUserList" parameterType="Map" resultMap="UserResultMap">
        SELECT * FROM users
        <where>
            <choose>
                <when test="username != null">AND username = #{username}</when>
                <when test="email != null">AND email = #{email}</when>
                <otherwise>AND status = 1</otherwise>
            </choose>
        </where>
    </select>
    ```
这些动态 SQL 标签允许您在 MyBatis 中根据不同的条件构建动态的查询语句,以实现更灵活的数据库操作。您可以根据具体的业务需求选择适当的标签来创建定制的查询逻辑。
