Mybatisで正規表現を使用する方法

Mybatisで正規表現を使用する方法

MyBatisで正規表現を使用する方法

MyBatisでは、selectなどで正規表現を使用することで、動的なSQLクエリを構築できます。
特に、where句やif条件で正規表現を使うことが一般的です。

例: testUserテーブルに対する検索

以下は、testUserテーブルでnameカラムに特定のパターンを持つレコードを取得する例です。

<mapper namespace="com.example.testUserMapper">
    <select id="selectByPattern" resultType="com.example.testUser">
        SELECT * FROM testUser
        WHERE name REGEXP #{pattern}
    </select>
</mapper>
例: 動的に正規表現を使用する

正規表現を使って、特定のパターンに基づいて検索条件を動的に変更する場合の例です。

<mapper namespace="com.example.testUserMapper">
    <select id="selectByDynamicPattern" resultType="com.example.testUser">
        SELECT * FROM testUser
        WHERE 1=1
        <if test="namePattern != null">
            AND name REGEXP #{namePattern}
        </if>
        <if test="emailPattern != null">
            AND email REGEXP #{emailPattern}
        </if>
    </select>
</mapper>
Java側での使用例

上記のMyBatisマッパーを使用するJavaのコード例です。

public class TestUserService {
    private TestUserMapper testUserMapper;

    public List<TestUser> getUsersByPattern(String namePattern, String emailPattern) {
        return testUserMapper.selectByDynamicPattern(namePattern, emailPattern);
    }
}

この方法で、正規表現を用いた柔軟な検索条件を実現できます。