温馨提示×

mybatis的query动态SQL实现

小樊
83
2024-08-19 00:11:40
栏目: 云计算

MyBatis中的动态SQL可以通过ifchoosewhenotherwisetrimwheresetforeach等标签实现。以下是一些常用的动态SQL示例:

  1. 使用if标签实现条件判断:
<select id="findUser" parameterType="map" resultType="User">
    SELECT * FROM user
    <where>
        <if test="id != null">
            AND id = #{id}
        </if>
        <if test="name != null">
            AND name = #{name}
        </if>
    </where>
</select>
  1. 使用trim标签处理SQL语句中的多余的AND或OR:
<select id="findUser" parameterType="map" resultType="User">
    SELECT * FROM user
    <where>
        <trim prefix="AND" prefixOverrides="AND">
            <if test="id != null">
                id = #{id}
            </if>
            <if test="name != null">
                AND name = #{name}
            </if>
        </trim>
    </where>
</select>
  1. 使用choosewhenotherwise标签实现条件选择:
<select id="findUser" parameterType="map" resultType="User">
    SELECT * FROM user
    <where>
        <choose>
            <when test="id != null">
                AND id = #{id}
            </when>
            <when test="name != null">
                AND name = #{name}
            </when>
            <otherwise>
                AND status = 1
            </otherwise>
        </choose>
    </where>
</select>
  1. 使用foreach标签处理集合参数的循环:
<select id="findUserByIds" parameterType="list" resultType="User">
    SELECT * FROM user
    WHERE id IN
    <foreach collection="ids" item="id" open="(" separator="," close=")">
        #{id}
    </foreach>
</select>

通过以上示例,可以根据不同的条件动态拼接SQL语句,实现灵活的查询操作。在实际开发中,可以根据具体需求结合不同的标签来编写动态SQL。

0