MyBatis if-else条件分岐の書き方と注意点【徹底解説】

MyBatisでは、要素を使用して条件判断を実現することができます。条件に応じてSQL文に動的に条件文を追加することができます。

以下はサンプルコードです。

<select id="selectUsers" parameterType="map" resultType="User">
  SELECT * FROM users
  <where>
    <if test="username != null">
      AND username = #{username}
    </if>
    <if test="age != null">
      AND age = #{age}
    </if>
  </where>
</select>

条件に基づいて、AND username = #{username}とAND age = #{age}の2つの条件文を動的に追加しました。

ユーザー名と年齢の両方が空でない場合、SQL文は次のようになります:

SELECT * FROM users
WHERE username = ? AND age = ?

ユーザー名が空であり、年齢が空でない場合、SQL文は次のようになります。

SELECT * FROM users
WHERE age = ?

もしusernameが空でなく、ageが空である場合、SQL文は次のようになります。

SELECT * FROM users
WHERE username = ?

要素を使用することで、条件に応じて動的にSQL文を構築することができます。実際の開発で非常に役立ちます。

bannerAds