<choose>、<when>、<otherwise> 是MyBatis中用于构建动态SQL的元素,类似于Java中的switch语句。它们的组合使得我们可以根据不同条件选择执行不同的SQL片段。

下面是一个简单的示例,演示了如何使用这些元素:
<select id="getUser" parameterType="map" resultType="User">
  SELECT * FROM users
  <where>
    <choose>
      <when test="id != null">
        AND id = #{id}
      </when>
      <when test="username != null">
        AND username = #{username}
      </when>
      <otherwise>
        AND 1=1
      </otherwise>
    </choose>
  </where>
</select>

在上述例子中:

  •  <choose> 元素包含了多个分支,每个分支由 <when> 元素表示。

  •  <when> 元素中的 test 属性指定了条件表达式,如果条件为真(非null且非空字符串),则执行 <when> 元素内的内容。

  •  <otherwise> 元素定义了当所有的 <when> 都不满足条件时的默认分支。


在实际应用中,这种结构可以用于构建根据不同的查询条件生成不同的SQL语句的情况。通过组合 <choose>、<when>、<otherwise> 元素,可以实现更复杂的条件判断和SQL生成逻辑。

需要注意的是,这只是动态SQL的一部分,你还可以结合其他动态SQL元素(如 <if>、<trim> 等)以及参数占位符等来构建更加灵活的SQL语句。


转载请注明出处:http://www.pingtaimeng.com/article/detail/7020/MyBatis