Mybatisで動的sqlを作成する方法
MyBatisで動的SQLを作成する方法
MyBatisでは、動的SQLを作成するためにif, choose, when, otherwise, where, set, foreachなどの要素を使用します。
以下は、test_userテーブルを例にした動的SQLの作成方法です。
基本的な使用例
XMLマッパーファイル (testUserMapper.xml)
<mapper namespace="com.example.mapper.TestUserMapper"> <!-- 動的SQLの例 --> <select id="selectUsers" parameterType="map" resultType="com.example.domain.TestUser"> SELECT * FROM test_user <where> <if test="username != null"> AND username = #{username} </if> <if test="age != null"> AND age = #{age} </if> </where> </select> <!-- chooseの例 --> <select id="selectUserByCondition" parameterType="map" resultType="com.example.domain.TestUser"> SELECT * FROM test_user <where> <choose> <when test="username != null"> AND username = #{username} </when> <when test="age != null"> AND age = #{age} </when> <otherwise> AND status = 'active' </otherwise> </choose> </where> </select> <!-- foreachの例 --> <select id="selectUsersByIds" parameterType="list" resultType="com.example.domain.TestUser"> SELECT * FROM test_user WHERE id IN <foreach item="id" collection="list" open="(" separator="," close=")"> #{id} </foreach> </select> </mapper>
主要な要素の説明
- if:
条件が満たされる場合にのみSQLを追加します。
- choose, when, otherwise:
複数の条件をチェックし、最初に満たされた条件に対応するSQLを生成します。
- foreach:
コレクションの要素を繰り返してSQLを生成します。
これにより、柔軟で動的なSQLを生成できるようになります。