MyBatis的choose标签用于在多个条件之间进行选择,类似于Java中的switch语句。它可以根据满足条件的第一个子标签执行对应的SQL语句。
choose标签包含多个when和一个otherwise子标签。每个when子标签包含一个test属性,用于指定条件判断的表达式。当满足某个when子标签的条件时,对应的SQL语句会被执行。如果没有任何when子标签的条件满足,那么otherwise子标签中的SQL语句会被执行。
以下是一个使用choose标签的示例:
<select id="getUser" parameterType="int" resultType="User">
SELECT *
FROM users
WHERE id = #{id}
<choose>
<when test="enabled != null">
AND enabled = #{enabled}
</when>
<when test="name != null">
AND name = #{name}
</when>
<otherwise>
AND age = #{age}
</otherwise>
</choose>
</select>
在上面的示例中,如果参数enabled不为空,那么会执行AND enabled = #{enabled}的SQL语句。如果参数name不为空,那么会执行AND name = #{name}的SQL语句。如果以上两个条件都不满足,那么会执行AND age = #{age}的SQL语句。
choose标签可以帮助我们编写更灵活的SQL语句,根据不同的条件执行不同的查询逻辑。