mybatisのchooseタグの用途は?
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に値がある場合はSQL文AND enabled = #{enabled}が実行され、パラメータnameに値がある場合はAND name = #{name}が実行され、上記2条件以外の場合はAND age = #{age}が実行されます。
CHOOSE構文を使用することで、さまざまな条件に応じて異なる照会を実行する、より柔軟なSQLステートメントを書くことができます。